答案 0 :(得分:1)
好像你偶然发现了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);
}