2013-05-27 4 views
0

Je dois le faire en quelque sorte, je sais que je peux utiliser une connexion locale, mais je ne pense pas que ce soit vraiment nécessaire. Je devrais être capable de faire quelque chose d'aussi simple que parent.foo() pour appeler la fonction foo.Variable Flash AS3 passant de la classe enfant au parent

Ceci est mon code que n'est pas de travail. L'erreur que j'obtiens est de dire que la fonction foo n'existe pas, mais je suis sûr qu'elle existe bel et bien. Je ne sais pas si cela compte, mais l'enfant est une classe, pas un SWF ou quoi que ce soit, je dis seulement cela parce que quand je google des solutions possibles, les méthodes que les gens utilisent sont avec les SWF.

Quoi qu'il en soit, merci pour votre aide

Répondre

1

je crois que votre classe est ajoutée à la mère comme un enfant.

Ensuite, vous pouvez juste dire YourClass(parent).foo();

De plus, une classe profondément imbriquée peut aussi appeler un parent dans la hiérarchie des objets d'affichage. Par exemple: ParentOfParentClass(parent.parent).foo();

2

Malgré l'exactitude de la réponse abhinav, je vous encourage à utiliser un événement ou un signal au lieu de cette méthode. Vous allez coupler vos classes étroitement avec cette approche.

MovieClip imbriqué:

//use bubbling to enable event listening in deeper displayObjects 
dispatchEvent(newEvent("somethingHappened", true)); 

parent MovieClip

child.addEventListener("somethingHappened", handlerFunction); 

function handlerFunction(event:Event):void 
{ 
    this.foo(); 
} 
+0

Je suis d'accord, cela est une manière générale plus saine et plus organisée pour faire des choses. – evilpenguin

+0

Merci, cela fonctionne très bien. Je ne savais pas que les événements fonctionnaient comme ça. –

Questions connexes