Flex: обнаружение, когда кнопки невидимы - PullRequest
0 голосов
/ 06 октября 2010

У меня есть несколько HBox с кнопками в них.Я программно делаю определенные кнопки невидимыми.В определенный момент все кнопки должны быть невидимыми.Как я могу узнать, когда все кнопки невидимы?Какой самый простой способ сделать это?

Видимость каждой кнопки определяется независимо от других кнопок.

<mx:HBox>
    <mx:Button id="button1" 
    click="clickHandler(event);" 
    toggle="true"
    visible=true/>

    <mx:Button id="button2" 
    click="clickHandler(event);" 
    toggle="true"
    visible=false/>

    <mx:Button id="button3" 
    click="clickHandler(event);" 
    toggle="true"
    visible=true/>
</mx:HBox>

<mx:HBox>
    <mx:Button id="button4" 
    click="clickHandler(event);" 
    toggle="true"
    visible=false/>

    <mx:Button id="button5" 
    click="clickHandler(event);" 
    toggle="true"
    visible=true/>

    <mx:Button id="button6" 
    click="clickHandler(event);" 
    toggle="true"
    visible=false/>
</mx:HBox>

Спасибо.

-Laxmidi

Ответы [ 2 ]

2 голосов
/ 06 октября 2010

Самый простой способ не обязательно лучший, но что-то вроде этого должно работать ...

public function areAllButtonsInvisible() : Boolean {
    for ( var i : int = 1; i < 7; i++ ) {
        if ( ( this["button"+i] as UIComponent ).visible {
            return false;
        }
    }
    return true;
}
1 голос
/ 06 октября 2010

Ответ от Грегора выше работает для всех кнопок в компоненте, но если вы просто хотите проверить кнопки внутри определенного HBox, вы можете использовать функцию «some» для дочернего массива компонента HBox следующим образом:

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">
<mx:Script>
    <![CDATA[
        import mx.core.UIComponent;

        private function clickHandler(event:MouseEvent):void{
            (event.target as UIComponent).visible = false;
            buttonsVis.text = box.getChildren().some(isVisible).toString();
        }

        private function isVisible(item:*, index:int, array:Array):Boolean{
            return (item as UIComponent).visible;
        }

    ]]>
</mx:Script>
<mx:HBox id="box">
    <mx:Button id="button1" 
               click="clickHandler(event);" 
               toggle="true"
               visible="true"/>

    <mx:Button id="button2" 
               click="clickHandler(event);" 
               toggle="true"
               visible="false"/>

    <mx:Button id="button3" 
               click="clickHandler(event);" 
               toggle="true"
               visible="true"/>
</mx:HBox>
<mx:Label text="Buttons are Visible: "/><mx:Label id="buttonsVis" text="true"/>

...