2009-04-04 4 views

Répondre

6

Cela dépend un peu de la classe externe. Si elle étend DisplayObject (ou tout petit-fils de DisplayObject), vous pourrez accéder à la propriété stage dès qu'elle est ajoutée à la liste d'affichage (qui est quand elle est ajoutée à la scène ou à tout autre DisplayObjectContainer). liste d'affichage).

Pour écouter qui utilisent le code suivant dans la classe externe:

addEventListener(Event.ADDED_TO_STAGE, AddedToStage); 

//... 

private function AddedToStage(e:Event):void 
{ 
    trace("TextField text" + TextField(stage["textfield"]).text); 
} 

Si ce pas un displayObject ou si elle ne va pas être sur la liste d'affichage, la meilleure chose serait proberly être pour lui donner la les objets auxquels il doit accéder (comme le TextField), soit dans le constructeur ou dans un appel de méthode séparé. Vous pourriez lui donner une référence à l'étape elle-même, mais ce ne serait pas très générique si par exemple vous avez besoin de la classe pour manipuler un TextField dans MovieClip.

Vous pouvez donner à la référence au TextField avec ce code:

//In any DisplayObject on the display list (could be inside a MovieClip or on the Stage itself) 

var manipulator:MyClass = new MyClass(TextField(stage["textfield"])); 

//In the external class 

public class MyClass 
{ 
    publich function MyClass(txt:TextField) 
    { 
     trace("TextField text" + txt.text); 
    } 
} 

Rappelez-vous que ce code ne vérifie pas si le champ de texte est en fait là. Vous devriez d'abord vérifier cela et lancer une erreur correcte pour faciliter le débogage.

+0

Il est rare, que je vois une réponse pour AS3 qui est rond et clair, vous le frappez sur la tête. Si la classe est un DisplayObject de quelque manière que ce soit, et dans la liste d'affichage, elle a accès à la scène. Si votre classe n'est pas un objet DisplayObject, créez un crochet dans le constructeur pour passer une référence à la scène :) –

Questions connexes