这并没有真正起作用,因为它需要一个字符串。我以我能想到的所有可能的方式进行了尝试。到目前为止,我提出了一个非常丑陋的解决方案:我添加了一个事件侦听器,用于检查我的主级别组件的状态更改:
<?xml version="1.0" encoding="utf-8"?>
<s:Panel xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
creationComplete="{onCreationComplete();}">
<fx:Script>
<![CDATA[
import mx.core.FlexGlobals;
import mx.events.StateChangeEvent;
private function onCreationComplete():void {
FlexGlobals.topLevelApplication.addEventListener(StateChangeEvent.CURRENT_STATE_CHANGE, onStateChanged);
}
private function onStateChanged(event:StateChangeEvent):void {
currentState = event.newState;
}
]]>
</fx:Script>
<s:states>
<s:State name="default" />
<s:State name="login" />
</s:states>
<s:TextArea includeIn="login"/>
</s:Panel>
请让我知道是否有更好的解决方案。顺便说一句,我有一种预感,State 组件的 basedOn 属性是要走的路。但不知道它期望什么样的格式:
<s:State name="login" basedOn="???" />