Нет, невозможно узнать что-либо о содержащем блоке кода во время конструктора, кроме того, что вы можете узнать из трассировки стека (хотя это не доступно, кроме как в отладочной версии Flash). Даже если бы у вас была глобальная точка доступа для содержащего класса, она все равно не позволила бы этот доступ.
Думайте о конструкторе как о вызове метода. В строке AS он будет называться до назначения. Например: var a:Foo = new Foo()
создается Foo
(конструктор завершается), а затем a
заполняется тем, что только что произошло. После этой точки a
останется независимым от своего контекста (из-за инкапсуляции), если об этом не будет сказано (это даже верно для DisplayObject - попробуйте это (var mc:MovieClip = new MovieClip(); trace( mc.root ) //this will be null
).
Я сохраняю это, потому что это полезно, хотя и не полезно для вашего первоначального ответа.
Вы всегда можете получить имя класса с помощью getQualifiedClassName
из пакета flash.utils
. Вы не можете получить объект DisplayObject до тех пор, пока он не будет сконструирован, но вы можете смоделировать это путем (я полагаю) переопределения function set name( value:String ):void
. Если это не сработает, попробуйте найти его после Event.ADDED
и / или Event.ADDED_TO_SAGE
.