[英]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.