Flex声明订单错误

时间:2011-02-11 06:50:21

标签: actionscript-3 flash flex air declaration

在Flex中,您可以使用非UI元素的声明标记。

问题: 宣言中的班级顺序是按升序排序的......

这意味着在这个例子中,AClass将在BClass之前实例化:

<fx:Declarations>
    <local:AClass />
    <local:BClass />
</fx:Declarations>

但是在下一个例子中,即使BClass是第一个,AClass也会在BClass之前被实例化。这是意外的行为,因为AClass可能依赖于BClass,但即使它在声明顺序中出现,它也会先实例化。

<fx:Declarations>
    <local:BClass />
    <local:AClass />
</fx:Declarations>

ACLASS

public class AClass
{
    public function AClass()
    {
        var _instance:Object = BClass.instance;
        trace("AClass " + _instance);
    }   
}

和BClass

public class BClass
{   
    private static var _instance:Object;
    public function BClass()
    {
        _instance = new Object();
        trace("BClass " + _instance);
    }

    public static function get instance():Object{
        return _instance;
    }
}

我疯了吗?

1 个答案:

答案 0 :(得分:1)

我只是通过检查生成的actionscript(使用-keep标志作为额外的编译器参数)进行了快速测试,并且声明的顺序似乎得到了正确保存。

您是否确定在更改对象的顺序后进行了完整的编译?