Похоже, вы наткнулись на странную странность в компиляторе Flex.
Некоторое время казалось, что this
относится к статическому типу класса, но я ошибался, похоже,просто ошибка в компиляторе, неправильно интерпретирующая тип this
во время компиляции.
Я бы не рекомендовал использовать этот подход, так как члены будут инициализированы до вызова конструктора.Посмотрите на этот пример:
package
{
public class Foo
{
private var bar1:Bar = new Bar("at bar1", Foo(this));
public function Foo()
{
var bar2:Bar = new Bar("in constructor", this);
}
private var bar3:Bar = new Bar("at bar3", Foo(this));
}
}
class Bar {
public function Bar(scope: String, x:*):void {
trace(scope, x is Foo);
}
}
, и очевидный ответ таков:
at bar1 true
at bar3 true
in constructor true
Если бы конструктор действительно предполагал выполнить некоторые реальные инициализации, вы бы фактически использовали его неинициализированным.
В заключение, сделайте это просто, переместите инициализацию поля в конструкторе, это то, для чего они в любом случае.
var trManager:TransitionManager;
public function Border( ) {
trManager = new TransitionManager(this);
}