代码之家  ›  专栏  ›  技术社区  ›  J. Martin

flex as3:组合框设置可见为false不隐藏

  •  1
  • J. Martin  · 技术社区  · 14 年前

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

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

    代码如下:

    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 回复  |  直到 14 年前
        1
  •  2
  •   Simon    14 年前

    从代码的形式上看,updatestate函数在哪里以及如何被调用并不是很清楚,要进一步深入到解决方案中,我想我需要看到这一点。不过,我想你可能会考虑另一种方法。

    您是否尝试使用视图而不是手动显示和隐藏内容以及设置属性?我认为,如果您对交换机中的每个案例都有不同的视图状态(例如“login”等),那么您将拥有更简单的代码。然后,所有显示隐藏内容都将成为设计时活动,而不是运行时活动,您只需设置当前状态即可。

    如果将状态名与applicationdata currentstate值匹配,甚至可以完全取消updatestate函数。

        2
  •  1
  •   Justin Gregoire    14 年前

    你试过换衣服吗

    updatestate(event:*=null):无效

    对此

    updatestate(event:event=null):void

    我还在调查这个事件:*到目前为止,我发现的一切都是事件而不是*。会继续找

    推荐文章