Simulation de thread pour Event.COMPLETE
Bonjour à tous,
Avant d'aborder le sujet, sachez que je débute en AS3.
Voici le contexte :
J'ai une classe (AS3) qui, entre autres, effectue le chargement d'un fichier XML. J'ai un attribut contenu dans ma classe qui me permet, à la fin du chargement du fichier XML, de récupérer le contenu du fichier XML afin d'y effectuer des traitements.
Le code est donc le suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
function charger(file:String) {
...
chargeur = new URLLoader ();
adresse = new URLRequest (file);
chargeur.dataFormat = URLLoaderDataFormat.TEXT;
chargeur.addEventListener(Event.COMPLETE, finChargementXML);
chargeur.load(adresse);
...
}
function finChargementXML(event:Event) {
contenu = event.target.data;
} |
En plus de cela, j'ai une fonction getXML() qui me permet de récupérer le contenu du fichier XML (donc retourne l'attribut contenu). Dans l'idéal je voudrais l'utiliser comme ça (cat de type de ma classe en question) :
Code:
1 2 3 4 5
|
...
cat.charger("config.xml")
var xml = cat.getXML()
... |
Le problème, c'est que cat.getXML() me renvoie null. J'ai donc essayé de mettre un timer avant cette instruction qui fait attendre 5 secondes pour que le fichier XML ait le temps de charger. Rien n'y fait, ça me retourne toujours null.
Après quelques recherches je me suis aperçu qu'il n'existait pas de threads en AS3 (il doit bien y avoir une raison mais franchement je trouve ça absurde... ou alors me trompe-je ?). Mon problème est donc tout à fait logique, il doit attendre de terminer l'exécution du code pour passer à celle de finChargementXML.
Ma question est donc : comment palier à ce problème ?
J'ai donc penser à deux solutions : simuler un thread ou accéder à la pile d'exécution pour lister tous les appels et détecter un appel à finChargementXML (auquel cas l'exécuter, mais est-ce possible ?).
Merci d'avance pour vos réponses.;)