2010-05-28 54 views
0

我在使用Flex(或Flash)4中的狀態時遇到了一些困難。讓我們說我的應用程序有三種狀態;默認(基本)狀態,狀態1和狀態2.Flex 4/Flash 4加入當前狀態

狀態1應始終基於基態,這很容易完成。但是,我希望狀態2基於當前狀態(基本狀態或狀態1)。我不能爲我的生活弄清楚。我嘗試將狀態1的基本屬性設置爲「this.currentState」,但這只是使瀏覽器崩潰。

<s:states> 
    <s:State name="default"/> 
    <s:State name="state1"/> 
    <s:State name="state2" basedOn="{this.currentState}"/> 
</s:states> 

<s:TitleWindow id="configWindow" includeIn="state1" width="250" height="100%" close="configWindow_closeHandler(event)"/> 
<s:Panel id="settings" includeIn="state2" width="200" height="200"/> 

回答

1

basedOn不是Bindable屬性,這就是爲什麼值在代碼中沒有改變的原因。

理論上,它是一個讀/寫屬性,因此您可以在運行時更改它;但您必須手動進行,可能是在ActionScript中。

根據您的代碼片段;我不明白你爲什麼要這樣做。只要你改變狀態到'狀態2',你會不會進入一個奇怪的循環?

+0

上面的代碼片段不起作用 - 因爲我錯誤地設置了basedOn屬性。 對於state2,我想添加到爲state1創建的元素。現在,當我從狀態1切換到狀態2時,狀態1的元素被刪除,因爲狀態2默認基於基態。 – user163757 2010-05-28 15:57:58

+0

將TitleWindow添加到兩個狀態,然後使用逗號分隔的列表: includeIn =「state1,state2」 – JeffryHouser 2010-05-28 16:48:19

+0

謝謝,includeIn和state組完成了這個技巧。 – user163757 2010-05-29 04:07:31