AS3参数强制

时间:2011-10-22 19:51:07

标签: flash actionscript-3

1 个答案:

答案 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);
}