Apache flex Flex AS3:ComboBox设置对false不可见';隐藏

Apache flex Flex AS3:ComboBox设置对false不可见';隐藏,apache-flex,actionscript-3,mxml,Apache Flex,Actionscript 3,Mxml,我在视图中有一个组合框,它接收有关应用程序状态更改的信息,然后根据整个应用程序状态显示或隐藏它的子项 它接收状态更改消息,跟踪正确的值,执行它应该执行的操作,但是,它似乎不起作用。本质上,它所需要做的就是在一个状态中隐藏一个组合框,然后在另一个状态中再次显示它 代码如下: public function updateState(event:* = null):void { trace("Project Panel Updating State"); switch(

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

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

代码如下:

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>

您是否尝试过更改

UpdateEstate(事件:*=null):无效

对此

UpdateEstate(事件:事件=null):无效


我仍在调查事件:*到目前为止,我发现的一切都是事件而不是*。repost仍然看起来像

从代码中还不太清楚updateState函数的调用位置和方式,要进一步了解解决方案,我想我需要了解这一点。不过,我想你可能会想一种不同的方法。< /P> 您是否尝试过使用视图而不是手动显示和隐藏内容以及设置属性?我认为,如果您的交换机中的每种情况都有不同的视图状态,例如“login”等,那么代码会更简单。然后,所有显示隐藏内容都会变成设计时活动,而不是运行时,您所要做的就是设置当前状态


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

您或多或少是对的,问题是在创建组件时调用updateState的时间不正确。因此,我只是将调用放在一个init函数中,该函数在creationComplete上调用。很高兴您将其整理好,但仍然认为使用视图会更好。我最终切换到了该函数。这是一个在flex中完成的大型项目,正在被重构为AIR。它位于flex应用程序的一个大MXML文件中,因此决定从何处开始改进是一件困难的事情。是的,可能是这样,但是:*或多或少是一样的。虽然它不会真正影响它,但我仍然更改了它。这是我不确定的,我无法找到任何使用过的事件:*计算出您想要说明所有事件类型。不过我也找到了MouseEvent和其他人。