Flex AS3:ComboBox集可见为false不会隐藏

时间:2010-04-01 14:01:16

标签: flex actionscript-3 mxml

我在视图中有一个组合框,它接收有关应用程序状态更改的信息,然后根据整个应用程序状态显示或隐藏它的子项。

它接收状态更改消息,它跟踪正确的值,它执行它应该做的事情,但是,它似乎不起作用。基本上,它需要做的就是在一个状态中隐藏一个组合框,并在另一个状态下再次显示它。

以下是代码:

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>

2 个答案:

答案 0 :(得分:2)

你的代码在哪里以及如何调用updateState函数并不是那么清楚,并且我想我需要进一步了解解决方案。但是,我想您可能会考虑采用不同的方法。

您是否尝试过使用视图而不是手动显示和隐藏内容以及设置属性?如果你的交换机中的每个案例都有不同的视图状态,我认为你会有更简单的代码,例如然后,所有显示隐藏的东西都变成了设计时活动而不是运行时,所有你需要做的就是设置当前状态。

如果您将州名与ApplicationData currentState值匹配,您甚至可以完全取消updateState函数。

答案 1 :(得分:1)

您是否尝试过更改

  

updateState(event:* = null):void

到这个

  

updateState(event:Event = null):void

我还在调查这个事件:*到目前为止我找到的所有东西都有Event而不是*。将重新发布仍在寻找