Trucsweb.com

Forum de discussion

 Forum « Flash et Shockwave » (archives)

Re: Recursivité en AS 2.0 / passage d'un Object

Envoyé: 3 octobre 2004, 8h11 par Oznog


Salut,

Oups, finalement tu ne la pas trop masacré le code, j'ai passé quelque temps ce matin à le regarder et ce n'est pas du tout ce que je pensais, enfin presque. Mais il manque toujours des chose.

En fait c'est un prototype AS1 qui a été partiellement transformé AS2 pour fonctionner avec une class.

Il y a deux astuces dans ce code.

1. L'objet de XML n'a aucune référence directe au clip qui le contient. De là l'astuce du "XMLMember extends XML" qui te manquait. Essentiellement pour permettre à la fonction "doConvert" de travailler sur le membre "this.XMLArray". Voir pour plus d'information sur "Bit-101" (http://www.bit-101.com/blog/archives/000023.html). Ceci dit, tu peux poublier cette portion du code, elle fonctionne très bien. La preuve le "n" passe bien l'objet XML à la fonction "doConvert".

2. La fonction "doConvert" permet de compler un manque avec Flash. L'objet flash à un sérieux manque par rapport aux autres moteurs XML. Il ne permet pas de cibler directement le nom d'un noeud. C'est un arbre et la seule façon de s'y retrouver est de faire des comparaison. Bien sûr tu navigue normalement avec tes méthodes XML "firstChild" etc mais tu compare le type du noeud et/ou s'il a des enfants pour enfin comparer le nom du noeud ou balise (nodeName) avec "menu" par exemple. Ce qui n'est pas très portable et très loing de l'idéologie XML.

C'est là que la fonction "doConvert" entre en jeu, pour convertir le tout en structure qui permet de cibler directement un noeud avec son nom. Ex: XMLArray.menu[0].itemText[0].

De là mon erreur avec XMLArray qui n'est pas du tout une matrice (array) mais bien un véritable objet ({}).

J'ai pas encore eu le temps de faire le tout de cette fonction, plusieurs astuce AS2 à saisir en même temps. Mais déjà j'ai noté une erreur.

Tu as comme résuktat :
XML [object Object]
XML undefined
XML undefined
...

Dès que tu change le type de contenu d'une variable son type change. Si tu mets this.XMLArray = 'allo'. Oups, ton XMLArray n'est plus un objet. C'est un peut ce que tu fais dans cette ligne.

if (this.XMLArray[k=n.nodeName] == null) this.XMLArray = ((a=this.XMLArray[k]))[d=0];

Il est vide et tu lui met du vide! Il faudrait plutôt :

if (this.XMLArray[k=n.nodeName] == null) this.XMLArray = ((a=this.XMLArray[k]=[{}]))[d=0];

Déjà là tu ne perdra plus ton objet et obtenir le résultat :

XML [object Object]
XML [object Object]
XML [object Object]
XML [object Object]
...

Mais il reste encore à faire. Ce n'est pas tout à fait ça encore. Dès que j'ai une minute j'y jette un oeil plus attentif. En attendant, peux-tu nous dire où tu as trouvé cette traduction AS2 de XML2AS. Je ne trouve même pas l'original que tu dit de "Justin Watkins", dans un livre? Note que cette fonction (XML2AS) en AS1 se trouve partout.

Ciao
Oznog


Réponses

 sp spRe: Recursivité en AS 2.0 / passage d'un Object Exo4/10/2004
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

.
@