2009-06-24 152 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);