我在视图中有一个组合框,它接收有关应用程序状态更改的信息,然后根据整个应用程序状态显示或隐藏它的子项。
它接收状态更改消息,它跟踪正确的值,它执行它应该做的事情,但是,它似乎不起作用。基本上,它需要做的就是在一个状态中隐藏一个组合框,并在另一个状态下再次显示它。
以下是代码:
public function updateState(event:* = null):void {
trace("Project Panel Updating State");
switch(ApplicationData.getSelf().currentState) {
case 'login':
this.visible = false;
break;
case 'grid':
this.visible = true;
listProjects.includeInLayout = false;
listProjects.visible = false;
trace("ListProjects: " + listProjects.visible);
listLang.visible = true;
break;
default:
break;
}
}
这是MXML:
<mx:HBox>
<mx:Button id="btnLoad" x="422" y="84" label="Load" enabled="true" click="loadProject();"/>
<mx:ComboBox id="listProjects"
x="652"
y="85"
editable="true"
change="listChange()"
color="#050CA8"
fontFamily="Arial" />
<mx:Label x="480" y="86" text="Language:" id="label3" fontFamily="Arial" />
<mx:ComboBox id="listLang"
x="537"
y="84"
editable="true"
dataProvider="{langList}"
color="#050CA8"
fontFamily="Arial"
width="107"
change="listLangChange(event)"/>
<mx:CheckBox x="830" y="84" label="Languages in English" id="langCheckbox" click='toggleLang()'/>
</mx:HBox>
答案 0 :(得分:2)
你的代码在哪里以及如何调用updateState函数并不是那么清楚,并且我想我需要进一步了解解决方案。但是,我想您可能会考虑采用不同的方法。
您是否尝试过使用视图而不是手动显示和隐藏内容以及设置属性?如果你的交换机中的每个案例都有不同的视图状态,我认为你会有更简单的代码,例如然后,所有显示隐藏的东西都变成了设计时活动而不是运行时,所有你需要做的就是设置当前状态。
如果您将州名与ApplicationData currentState值匹配,您甚至可以完全取消updateState函数。
答案 1 :(得分:1)
您是否尝试过更改
updateState(event:* = null):void
到这个
updateState(event:Event = null):void
我还在调查这个事件:*到目前为止我找到的所有东西都有Event而不是*。将重新发布仍在寻找