Trucsweb.com

Forum de discussion

 Forum « Flash et Shockwave » (archives)

Re: double chargement d'XML [Pb temps de chargement]

Envoyé: 3 décembre 2005, 3h50 par toph


Salut ...

alors, je n'ai pas trop regardé ton code en détail mais le deuxième mail que tu envois me rappelle un problème avec lequel j'ai bien galéré aussi...

en fait, si j'ai bien tout suivi, tu as besoin d'avoir chargé ton premier xml pour lancer le chargement du deuxième, c ça?

et bien, c'est là qu'est tout le problème.
En actionscript, ce n'est pas parce que des lignes de codes sont écrites avant, qu'elles sont forcément terminées au moment ou la tête de lecture passe à la suivante. Ce détail est particulièrement vrai dans le cas des fonctions onLoad.

Un petit exemple pour être plus clair
Prenons le code suivant:

monXML.load(infoXML);
monXML.onLoad = function(...) {
___code divers;
___infoXML2 = quelquechose;
___autres lignes de code...;
}

monXML2.load(infoXML2);
monXML2.onLoad = function (...) {
___[...]
}
suite du code1;
suite du code2;
suite du code3;
...

Ce code simplifié ressemble dans la structure au tien ...
Comment le flash va-t-il lire ce fragment? Le résultat sera le même que s'il avait empilér les appels de fonctions et qu'il les avait exécuté toutes ensuite ...

Biensûr ce n'est pas comme ça que flash fonctionne, mais dans le cas présent le résultat est identique.

En fait, quand flash va lire ton monXML.load, il va mettre en place la connexion (pour atteindre infoXML qui est le chemin du fichier source). Cette opération prend un certain temps, même infime mais suivant pour que flash se dise :
"ok, j'ai demandé la connexion, mais je n'ai pas encore eu de retour. En atetndant je vais passer aux lignes suivantes."
Il lit donc les lignes qui suivent.

Tu vas me demander : mais le .onLoad, il sert à quoi? excellente question. Le onLoad est exécuté quand la connexion avec le fichier source est faite et que flash a chargé son contenu [ou au moins une partie] ... Entre temps, flash a continué sa lecture du code général en empilant les appels load (et donc les réponses onLoad), mais malheureusement sans avoir initialisé infosXML2.

Donc pour simplifier : à cause de ce temps de connexion minimal ton flash va lire les choses dans cette ordre :

- monXML.load(infoXML); infoXML est bien initialisé;
- monXML2.load(infoXML2); infoXML n'est pas encore initialisé.
- suite du code1;
- suite du code2;
- suite du code3;
- monXML2.onLoad() qui retourne une erreur puisque infoXML2 vaut 'undefined'
- monXML.onLoad() qui va logiquement démarré après puisque la connexion va prendre un peu de temps à se mettre en place (en tout cas, plus longtemps que le retour d'erreur de monXML2.onLoad, d'où le fait qu'elle se lance après)
- et dans mon XML.onLoad :
- - code divers;
- - infoXML2 = quelquechose; c maintenant que infoXML2 est initialisé, mais trop tard!
- - autres lignes de code...;


voilà, j'espère que j'ai été clair. j'en ai chier avec ça. Surtout quand tu dois retraiter les fichiers derrière et que t'en as 50000 à la suite... bref c'est une misère ... mais ça semble logique, non?

pour résoudre ton problème (si tant est que ce soit celui-là) il faudrait faire :

monXML.load(infoXML);
monXML.onLoad = function(...) {
___code divers;
___infoXML2 = quelquechose;
___monXML2.load(infoXML2);
}
monXML2.onLoad = function (...) {
___[...]
___suite du code1;
___suite du code2;
___suite du code3;
}


Comme ça tu es sûr que ton monXML2.load() ne sera lancer que au moment ou infoXML2 sera initialisé et pas avant!!!


Voilà, voilà, j'espère que ça ira...

A plus
Toph'


Réponses

 sp spRe: double chargement d'XML [Pb temps de chargement] popo4/12/2005
Aucun médias sociaux
X

Trucsweb.com Connexion

Connexion

X

Trucsweb.com Mot de passe perdu

Connexion

X

Trucsweb.com Conditions générales

Conditions

Responsabilité

La responsabilité des Trucsweb.com ne pourra être engagée en cas de faits indépendants de sa volonté. Les informations mises à disposition sur ce site le sont uniquement à titre purement informatif et ne sauraient constituer en aucun cas un conseil ou une recommandation de quelque nature que ce soit.

Aucun contrôle n'est exercé sur les références et ressources externes, l'utilisateur reconnaît que les Trucsweb.com n'assume aucune responsabilité relative à la mise à disposition de ces ressources, et ne peut être tenue responsable quant à leur contenu.

Droit applicable et juridiction compétente

Les règles en matière de droit, applicables aux contenus et aux transmissions de données sur et autour du site, sont déterminées par la loi canadienne. En cas de litige, n'ayant pu faire l'objet d'un accord à l'amiable, seuls les tribunaux canadien sont compétents.

X

Trucsweb.com Trucsweb

X

Trucsweb.com Glossaire

X

Trucsweb.com Trucsweb

X

Trucsweb.com Trucsweb

Conditions

Aucun message!

Merci.

X
Aucun message!
X

Trucsweb.com Créer un compte

Créer un compte

.
@