[英]Flex AS3: ComboBox set visible to false doesn't hide
我在视图中有一个组合框,用于接收有关应用程序状态更改的信息,然后应该根据整个应用程序状态显示或隐藏其子级。
它接收状态更改消息,跟踪正确的值,执行应有的功能,但是似乎不起作用。 本质上,它所需要做的就是在一个状态下隐藏组合框,并在另一状态下再次显示它。
这是代码:
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>
您的代码在何处以及如何调用updateState函数,以及如何进一步深入解决方案中,尚不清楚,我想我需要看看。 但是,我认为您可能想考虑其他方法。
您是否尝试过使用视图来代替手动显示和隐藏事物以及设置属性? 我认为如果您在开关中的每种情况下都具有不同的视图状态(例如“登录”等),那么您将拥有更简单的代码。那么所有显示的隐藏内容将变成设计时活动,而不是运行时,要做的就是设置当前状态。
如果将状态名称与ApplicationData currentState值进行匹配,则甚至可以完全取消updateState函数。
您是否尝试过改变
updateState(event:* = null):void
对此
updateState(event:Event = null):void
我仍在调查事件:*,到目前为止,我发现的所有内容都使用事件而不是*。 仍会重新发布
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.