【问题标题】:Flex States Question弹性状态问题
【发布时间】:2009-06-24 09:27:51
【问题描述】:

我需要找出我当前正在查看的状态。让我们假设...

<mx:states>
        <mx:State name="state1">

            </mx:AddChild>
        </mx:State>

        <mx:State name="state2">

            </mx:AddChild>
        </mx:State>

</mx:states>

一旦我登录我的应用程序,state1 就会出现,但在刷新页面时它会再次消失。

我现在有会话值,只需要检查会话是否为真,然后保持当前状态或返回默认状态。

【问题讨论】:

    标签: apache-flex


    【解决方案1】:

    您可以从组件的 currentState 属性中确定当前状态。在 flex 3 中,默认状态是空字符串。当您刷新浏览器页面时(谁在使用 Flash 应用程序时这样做?)您实际上重新加载了整个 Flash 应用程序,这意味着您的所有组件都将被重新创建。因此,如果您检查会话,则需要相应地分配组件的 currentState。

    因此,根据您的示例代码,如果您正在查看状态 2,则定义状态的组件的 currentState 现在将是“state2”。这是您指定为第二个州的名称的值。要将查看设置为第一个状态,您可以这样做

    component.currentState = "state1";
    

    因为那是您的第一个州的名称。要进入默认(初始)状态,您可以:

    component.currentState = "";
    

    要验证您是否处于第二状态,您可以这样做

    if (component.currentState == "state2")
      doSomething();
    

    如果您的第二个状态将被命名为“secondstate”而不是“state2”,您将使用:

    if (component.currentState == "secondstate")
          doSomething();
    

    至少 flex 3 是这样,因为据我了解,flex 4 引入了一些与状态相关的更改。

    【讨论】:

    • 假设我正在查看状态 2,我怎么知道...我可以通过 selectedIndex 或其他方式获取此信息...您能帮我多一点吗
    【解决方案2】:

    与上述一致,这里有一些代码示例:

    在组件中,您必须引用this.currentState 或简单地引用currentState

    private function checkCurrentState():void
    {
        alert(this.currentState);
    }
    

    或者,如果您正在调试,只需使用 trace() 语句:

    trace(this.currentState);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-04
      • 2018-04-27
      • 2017-03-16
      • 1970-01-01
      • 2011-05-18
      • 2018-04-15
      • 1970-01-01
      相关资源
      最近更新 更多