2010-05-28 97 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