Non, il est impossible de savoir quoi que ce soit sur le bloc de code contenant au cours d'un constructeur, d'enregistrer ce que vous pouvez apprendre de la trace de la pile (si ce n'est pas disponible, sauf dans la version de débogage de Flash). Même si vous avez un point d'accès global pour la classe contenant, il ne permet toujours pas cet accès.
Pensez à un constructeur comme un appel de méthode. Dans une ligne de AS, il sera appelé avant l'affectation. Par exemple: var a:Foo = new Foo()
le Foo
est créé (le constructeur complète), puis a
est rempli avec tout ce qui vient de se passer. Après ce point a
ne restera agnostique de son contexte (en raison de l'encapsulation) à moins qu'il soit dit à ce sujet (ce qui est encore vrai sur un DisplayObject - essayer (var mc:MovieClip = new MovieClip(); trace(mc.root) //this will be null
)
Je garde cela parce que. il est utile mais pas utile à votre réponse originale.
vous pouvez toujours obtenir le nom d'une classe avec getQualifiedClassName
du package flash.utils
. vous ne pouvez pas obtenir un displayObject bien après qu'il a été construit, mais vous pouvez simuler par (je crois) écrasant function set name(value:String):void
Si cela ne fonctionne pas, alors essayez de le trouver après Event.ADDED
et/ou Event.ADDED_TO_SAGE
.
j'écris une classe pour ma propre bibliothèque, et faisant référence au nom de l'instance serait une grande commodité, même mais je suis conscient que ce n'est probablement pas le meilleur design. – TheDarkIn1978