Condition IF par rapport au XML

[Résolu]
Signaler
Messages postés
18
Date d'inscription
lundi 18 juillet 2005
Statut
Membre
Dernière intervention
22 juin 2008
-
Messages postés
18
Date d'inscription
lundi 18 juillet 2005
Statut
Membre
Dernière intervention
22 juin 2008
-
Bonjour,

Je voudrais créer une action qui se réalise uniquement si le XML remplit une condition.

mon actionscript :
x = myXML.firstChild;
    if (x.childNodes[4].childNodes[0].attributes.value = "abc") { //abc étant le texte qu'on veut retrouver
        gotoAndPlay(61);
} else { .......

mon xml : (juste la partie concernée)
<3_matchs> <!-- ChildNodes[4] -->
<1 value="abc" />
</3_matchs>

Problème : même quand le texte n'est pas identique, la condition est toujours remplie et l'animation se lance.

Mon fichier est correctement intégré (le texte dynamique fonctionne) mais ça marche pas !

Merci de m'aider (sans m'envoyer sur l'aide d'adobe en ligne, si je poste, c'est que je n'ai pas trouvé).

www.coucoucorp.com

12 réponses

Messages postés
18
Date d'inscription
lundi 18 juillet 2005
Statut
Membre
Dernière intervention
22 juin 2008

Trouvé !

la condition IF est placée dans le clip (comme dans le cas d'un key.press).
ERREUR !
Il fallait placer la condition (que j'ai changé en Switch pour plus de simplicité) dans la séquence même et faire référence au clip comme ça :

resultatJ2 = x.childNodes[3].childNodes[1].attributes.value;
        switch (resultatJ2) {
            case "2" :
                _root.clip2.gotoAndPlay(2);
                break;

Je suis enfin débarrassé de ce problème !

Merci quand même pour m'avoir épaulé

www.coucoucorp.com
Messages postés
1375
Date d'inscription
dimanche 28 novembre 2004
Statut
Membre
Dernière intervention
2 août 2011

hello,

Correction :)

x = myXML.firstChild;
    if (x.childNodes[4].childNodes[0].attributes.value == "abc") { //abc étant le texte qu'on veut retrouver
        gotoAndPlay(61);
} else { .......
Messages postés
18
Date d'inscription
lundi 18 juillet 2005
Statut
Membre
Dernière intervention
22 juin 2008

Merci pour la réponse mais ca passe toujours pas

juste au cas où, je suis en ActionScript 2.0

www.coucoucorp.com
Messages postés
1375
Date d'inscription
dimanche 28 novembre 2004
Statut
Membre
Dernière intervention
2 août 2011

le double == est obligatoire pour les conditions.

de plus, pourquoi tu fais une condition sur un noeud XML ? fais la condition directement par rapport ton champ texte, donc :

x = myXML.firstChild;
    if (monChamTexte.text== "abc") { //abc étant le texte qu'on veut retrouver
        gotoAndPlay(61);
} else { .......
Messages postés
18
Date d'inscription
lundi 18 juillet 2005
Statut
Membre
Dernière intervention
22 juin 2008

pour le "pourquoi", tout betement parce que ce n'est pas une information censée apparaitre dans un champ dynamique. Cependant meême en essayant ca (l'info apparait bien dans le champ dynamique) ca marche pas.... mais différement : il bouge plus meme quand la condition est vraie.

J'ai essayé de mettre le résultat avec guillemets et sans mais ca ne change rien.

www.coucoucorp.com
Messages postés
18
Date d'inscription
lundi 18 juillet 2005
Statut
Membre
Dernière intervention
22 juin 2008

y'a du nouveau : mon exemple se base sur "abc" mais mon fichier renvoie "1" ou "2" ....
- si je fais mon code à partir de "1" : l'animation ne bouge jamais
- si je la fais sur "abc" : elle bouge tout le temps

Conclusion : ca ne marche toujours pas, mais maintenant le résultat du IF sur un noeud = IF sur texte dynamique

www.coucoucorp.com
Messages postés
1375
Date d'inscription
dimanche 28 novembre 2004
Statut
Membre
Dernière intervention
2 août 2011

Peut-tu reexpliquer ton probleme maintenant. Puis envoi tes fichiers si tu veux ke je regarder ! :-)
Messages postés
18
Date d'inscription
lundi 18 juillet 2005
Statut
Membre
Dernière intervention
22 juin 2008

Je vais reprendre depuis le début, parce que mon code a evolué depuis (je me repose pas uniquement sur des forums )
but de l'opération : gérer l'"arbre" d'un tournoi par flash (pour le visuel) et xml (pour les données).
(ce serait plus simple de faire des boutons pour faire avancer les gagnants mais on m'a demandé que les gagnants soient désignés dans ls xml... je m'incline)
Le xml gère le nom des participants ainsi que leur évolution dans le tournoi (plus d'autres choses sans interet ici).
La façon d'y arriver : 2 possibilités dans xml :
- <match> <match 1 value="1" /> </match> pour donner le numéro du joueur qui avance
- <joueurs> <joueur 1 value="2" /> (et ainsi de suite pour tous les joueurs) pour dire que le joueur 1 avance au 2° match
Le problème : bah... ca marche pas. J'ai essayé des contions IF ou SWITCH pour avancer depuis le noeud, idem depuis le résultat affiché dans un TextDyn. Mais ca marche pas (snif)

j'aimerais bien t'envoyer les fichiers mais.... comment on fait ?

www.coucoucorp.com
Messages postés
1375
Date d'inscription
dimanche 28 novembre 2004
Statut
Membre
Dernière intervention
2 août 2011

Messages postés
18
Date d'inscription
lundi 18 juillet 2005
Statut
Membre
Dernière intervention
22 juin 2008

euh... ca doit etre ici

T'occupes pas du boxon dans la 1° (et seule) frame, je fais tous mes tests sur la meme image

www.coucoucorp.com
Messages postés
1375
Date d'inscription
dimanche 28 novembre 2004
Statut
Membre
Dernière intervention
2 août 2011

euhh désolé de redemander mais j'ai rien capter de se que tu voulai faire... lol

Tu veu gérer l'avancer des joueur via XML et non par bouton ? sachant que si tu gere par XML tu ne vera pas le nom joueur avancé en live (je dis sa car apparement ta fais des interpolation pour le faire grimper) !
Messages postés
18
Date d'inscription
lundi 18 juillet 2005
Statut
Membre
Dernière intervention
22 juin 2008

en effet, tu as bien résumé.

Il faut que l'on voit l'avancement du joueur mais que ce soit géré dans le XML (ca me fait penser à une future question ca ! avec des zooms et le lancement de l'anim' quand la camera passe sur le clip..... on verra ca plus tard !!!)

Mon "commanditaire" est parfaitement concient qu'il faille recharger le .swf (voire meme l'arreter et le rallumer) mais c'est ce qu'il veut pour que le tournoi puisse rester ouvert plusieurs jours si besoin (et donc reprendre là où il s'est arrété).

Les interpollations sont là que pour faire joli (d'ailleurs va falloir que je les gère différemment)

PS : merci pour ton aide et ta patience

www.coucoucorp.com