Accédant à la classe de Document en AS3
Comment peut-instancié classes accéder à la classe de Document?
Même après que je nom de la classe du Document à l'aide de la barre de Propriétés en Flash, qui tentent d'y accéder à partir d'autres classes échoue généralement, en disant "tentative d'accès à une propriété non définie...
Une solution est toujours casting de la classe Document à lui-même! par exemple.
Main(Main).globalMethod();
Mais parfois, même ce stellaires gotcha échoue, et puis il y a généralement aucun moyen de sortir, en dehors de ce qui est évident!
class Other{
var parentClass:Main;
public function Other(parent:Main){
parentClass = parent; //pointer to the Main class in a local var!
Main(parentClass).globalMethod();
}
}
OriginalL'auteur Robinicks | 2008-12-16
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser un singleton pour votre classe de document (
Main
, dans votre exemple), ce qui vous permet d'accéder à l'instance de n'importe où.Vous accéder à l'
Main
exemple comme ceci:La classe de document est un très bon candidat pour le pattern singleton, parce que généralement, il ne devrait être qu'instance disponibles.
Ce n'est pas un Singleton, c'est plus d'un Monostate.
Jeremy: L'exemple de la propriété de la fonction s'assure juste que seule la classe Principale pourrait peut-être changer le privé _instance var. Notez qu'il n'existe pas de setter. Matt: Merci à vous pour m'éclairer.
OriginalL'auteur aaaidan
La classe de document n'est pas, en soi, une accessible partout dans le monde objet. Si vous voulez appeler les méthodes qui sont dans la classe du document, vous devez toujours passer une référence de main aux autres classes/objets que voulez appeler ses méthodes. Plus que l'approche orientée objet serait d'envoi d'événements à partir de vos autres classes (les Autres) de la classe Principale de l'écouter et de l'appel d'une méthode appropriée en lui-même.
Si vous êtes sans se soucier de garder une bonne programmation orientée objet structure et souhaitez accéder à la classe de document à partir d'un objet d'affichage qui a été ajouté à la liste d'affichage vous pouvez essayer quelque chose comme:
stage.getChildAt( 0 );
OriginalL'auteur Matt W
Juste une note de côté, mais la réponse la plus courte à cette question est: de la même manière toute catégorie d'accéder à toute autre classe. C'est, avec une référence directe ou d'une exposition statique. La classe de document n'est pas différent de toute autre catégorie dans ce domaine.
OriginalL'auteur fenomas