Flex 3:States:CreationPolicy = All

时间:2009-11-10 09:53:42

标签: flex flex3

我有一个具有不同状态的组件,当我在另一个状态中分配一些值时,我得到一个运行时错误[null]

如何一次加载所有状态?使用creationpolicy还是其他任何方式?

在TabNavigator中,creationpolicy = all解决了这个问题,但是当有很多状态时如何解决这个问题?

由于

2 个答案:

答案 0 :(得分:1)

AddChild元素有一个creationPolicy属性,默认为'auto',但也接受'all'或'none'。将其设置为“全部”应该适合您:

http://livedocs.adobe.com/flex/3/langref/mx/states/AddChild.html#creationPolicy

答案 1 :(得分:1)

这对于flex 4.6不起作用,因为您收到弃用错误消息。似乎mxml编译器无法识别任何形式的尝试强制加载所有状态中的组件。解决此问题的一种方法是在创建时手动将状态切换到您正在使用的所有状态,例如:currentState =“Edit”; currentState =“记录”; currentState =“默认”;请注意,你甚至不能在每个循环中使用字符串常量,你必须使用内联字符串文字,以便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();
    }
  }
}