"Traduction" basique de _root en AS3.0

nicoool18 Messages postés 39 Date d'inscription dimanche 28 août 2005 Statut Membre Dernière intervention 20 mai 2008 - 4 déc. 2007 à 13:55
oktopuss Messages postés 1 Date d'inscription vendredi 15 août 2008 Statut Membre Dernière intervention 11 février 2009 - 11 févr. 2009 à 18:16
Bonjour à tous !
Je pratique depuis longtemps l'AS2.0, et je viens de passer en AS3.0, qui est vraiment beaucoup mieux ! Mais bon j'ai quelques soucis de "traduction".
En effet, meme apres beaucoup de recherche, je n'arrive pas à acceder à des variables ou à des fonctions, qui sont déclarées dans le script pricipal (l'ancien _root), depuis un clip. En gros pour traduire l'ancien :
_root.fct()  ou  this._parent.var1
J'ai essayer toutes les combinaisons avec root, stage, Stage, this.parent, this.root, etc...
J'ai seulement trouvé une commande "bricolage", qui fonctionne mais qui n'est pas puissante et plutot lourde à utiliser : this.parent["fct"].call();
J'ai exactement le meme probleme pour nextFrame() depuis un clip pour changer la tete de lecture de la scene pricipale...
Bon voila j'espere que vous pourais m'élucider mon probleme !
Merci beaucoup !

:)

3 réponses

cs_smoochy Messages postés 183 Date d'inscription mercredi 29 novembre 2000 Statut Membre Dernière intervention 23 avril 2010
6 déc. 2007 à 17:36
j'ai pas encore as3, mais je m'y intéresse vu que je vais bientôt changer.... Voilà ce que j'ai trouvé à ce sujet: (trouvé ici: http://www.flashxpress.net/forum/archive/index.php/t-62774.html)

En ActionScript 1 et 2, une animation vierge comportait un seul super MovieClip conteneur désigné par la propriété globale _root. (en réalité, un par _level).

En ActionScript 3 la structure de base d'un fla a changé en 2 points principaux :

1) Le conteneur principal n'est plus un MovieClip mais une instance de Stage (qui hérite de DisplayObjectContainer).

Ce stage est une coquille qui par défaut, se contente de contenir votre animation.

2) Votre animation est une instance de Sprite (ou MovieClip si vous utilisez la timeline principale) contenu dans la displaylist du stage.

Une animation AS3 comporte donc par défaut un objet graphique Stage particulier qui contient lui-même comme unique enfant un Sprite (votre animation).

Quand vous ouvez un nouveau fichier Flash, c'est donc l'enfant unique de Stage que vous manipulez dans l'environnement auteur : votre scène.

Quand à _root il a disparu sous sa forme globale pour laisser place à la propriété root de DisplayObject.

root designe l'objet graphique le plus haut dans l'arborescence de votre animation.

Si vous créer une animation vierge root designe donc la scène principale (et non le Stage qui est son parent !).

Si vous chargez une animation (swf) extérieure, la propriété root designera l'objet graphique chargé et non pas l'animation principale.

Attention, l'accès au Stage ou au root d'une animation ne peut plus se faire de façon globale. Vous devez impérativement passer par la propriété stage ou root d'un DisplayObject.

Qui plus est, si ce DisplayObject n'est placé dans aucune displaylist en cours d'affichage, ses propriétés stage et root retourneront null.

Ce qu'il faut retenir de ce post :

- Il existe un seul stage par animation flash (quelque soit les chargements)
- Il existe autant de root que d'animations chargées
- Le root d'une animation chargée est relatif à cette dernière
- root/stage doit être interrogé sur un DisplayObject en cours d'affichage

Si vous avez vraiment besoin de cibler _root à l'ancienne (pas bien!), sachez que l'équivalent AS3 peut s'écrire : stage.getChildAt(0).

voilà, vu que j'ai pas flash 9 je peux pas tester, mais j'espère que ça peut te donner un élément de réponse
0
nicoool18 Messages postés 39 Date d'inscription dimanche 28 août 2005 Statut Membre Dernière intervention 20 mai 2008
11 févr. 2008 à 13:27
Salut !
Merci bcp pour ta réponse, mais ceci ne marche pas pour les variables, car getChildAt(0) renvoi un objet d'affichage...
Aurais-vous une autre solution svp ?
Merci

:)
0
oktopuss Messages postés 1 Date d'inscription vendredi 15 août 2008 Statut Membre Dernière intervention 11 février 2009
11 févr. 2009 à 18:16
lire
0
Rejoignez-nous