【发布时间】:2009-11-10 09:53:42
【问题描述】:
我有一个具有不同状态的组件,当我在另一个状态下分配一些值时,我得到一个运行时错误 [null]
如何一次加载所有状态?使用creationpolicy还是其他方式?
在 TabNavigator 中,creationpolicy=all 解决了这个问题,但是当状态很多时如何解决这个问题呢?
谢谢
【问题讨论】:
标签: apache-flex flex3
我有一个具有不同状态的组件,当我在另一个状态下分配一些值时,我得到一个运行时错误 [null]
如何一次加载所有状态?使用creationpolicy还是其他方式?
在 TabNavigator 中,creationpolicy=all 解决了这个问题,但是当状态很多时如何解决这个问题呢?
谢谢
【问题讨论】:
标签: apache-flex flex3
AddChild 元素有一个 creationPolicy 属性,默认为“auto”,但也接受“all”或“none”。将其设置为“全部”应该适合您:
http://livedocs.adobe.com/flex/3/langref/mx/states/AddChild.html#creationPolicy
【讨论】:
这不适用于 flex 4.6,因为您会收到弃用错误消息。似乎 mxml 编译器不会识别任何形式的尝试强制加载所有状态的组件。一种解决方法是在创建时手动将状态切换到您正在使用的所有状态,例如: currentState = "Edit"; currentState = "记录"; currentState = "默认";请注意,您甚至不能将 for each in 循环与字符串常量一起使用,您必须使用内联字符串文字,以便 mxml 编译器接受它们。
另一个看起来更简洁的解决方案是按如下方式初始化您的组件:
参考:http://compacted.wordpress.com/2009/08/14/unit-testing-flex-states/#comments
public static function initializeStates(component:UIComponent):void {
for each (var state:mx.states.State in component.states) {
for each (var override:IOverride in state.overrides) {
override.initialize();
}
}
}
【讨论】: