在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;
}
}
我疯了吗?
答案 0 :(得分:1)
我只是通过检查生成的actionscript(使用-keep标志作为额外的编译器参数)进行了快速测试,并且声明的顺序似乎得到了正确保存。
您是否确定在更改对象的顺序后进行了完整的编译?