【问题标题】:Flex 3: States : CreationPolicy = AllFlex 3:状态:CreationPolicy = All
【发布时间】:2009-11-10 09:53:42
【问题描述】:

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

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

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

谢谢

【问题讨论】:

    标签: apache-flex flex3


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      这不适用于 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();
          }
        }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-07
        • 1970-01-01
        • 1970-01-01
        • 2011-07-29
        • 1970-01-01
        • 2012-03-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多