2009-06-24 82 views
0

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

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

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

     <mx:State name="state2"> 

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

</mx:states> 

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

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

回答

1

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

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

component.currentState = "state1"; 

因为这是您的第一个州的名称。要转到默认(初始)状态,你会怎么做:

component.currentState = ""; 

要验证你在第二个状态时,你会怎么做

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

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

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

至少这是对Flex 3的方式,因为我的理解Flex 4中引入了相关国家的一些变化。

+0

让我想我正在查看状态2,我怎么能知道这个...我可以通过像selectedIndex或o其他...可以帮助我多一点 – Kevin 2009-06-24 11:31:00

0

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

在组件中,你必须引用this.currentState或者干脆currentState

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

,或者,如果你正在调试,只需使用一个trace()声明:

trace(this.currentState);