Flex States问题

时间:2009-06-24 09:27:51

标签: flex

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

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

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

        <mx:State name="state2">

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

</mx:states>

登录我的应用程序后,状态1会出现,但刷新页面后会再次消失。

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

2 个答案:

答案 0 :(得分: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引入了一些与状态相关的变化。

答案 1 :(得分:0)

与上述一致,以下是一些代码示例:

在组件中,您必须引用this.currentState或仅引用currentState

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

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

trace(this.currentState);