Flex AS3: ComboBox, видимый в false, не скрывает - PullRequest
1 голос
/ 01 апреля 2010

У меня есть выпадающий список, который получает информацию об изменениях состояния приложения, а затем должен показывать или скрывать его дочерние элементы на основе всего состояния приложения.

Он получает сообщения об изменении состояния, отслеживает правильные значения, выполняет то, что должен делать, однако, похоже, он просто не работает. По сути, все, что ему нужно сделать, это скрыть комбо-бокс в одном состоянии и показать его снова в другом состоянии.

Вот код:

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 ]

2 голосов
/ 01 апреля 2010

Не совсем ясно, откуда и как вызывается функция updateState, из вашего кода, и для дальнейшего решения проблемы, я думаю, мне нужно это увидеть. Тем не менее, я думаю, что вы можете рассмотреть другой подход.

Вы пытались использовать представления вместо того, чтобы вручную показывать и скрывать объекты и задавать свойства? Я думаю, что у вас был бы более простой код, если бы у вас было другое состояние просмотра для каждого случая в вашем коммутаторе, например 'вход в систему' и т. д. Затем все показанные скрытые элементы становятся действиями времени разработки, а не времени выполнения, и все, что вам нужно сделать, это установить текущее состояние.

Если вы сопоставили имена своих состояний со значениями CurrentState из ApplicationData, вы даже можете полностью отказаться от функции updateState.

1 голос
/ 01 апреля 2010

Вы пытались изменить

updateState (событие: * = null): void

к этому

updateState (event: Event = null): void

Я все еще смотрю на событие: * и все, что я нашел до сих пор, имеет событие вместо * Будет ли репост еще смотреть

...