Flex:检测按钮何时不可见

时间:2010-10-06 17:47:03

标签: flex button invisible

我有一些带有按钮的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 个答案:

答案 0 :(得分:2)

最简单的方法不一定是最好的方式,但这样的事情应该有用......

public function areAllButtonsInvisible() : Boolean {
    for ( var i : int = 1; i < 7; i++ ) {
        if ( ( this["button"+i] as UIComponent ).visible {
            return false;
        }
    }
    return true;
}

答案 1 :(得分:1)

上面的Gregor的回答适用于组件中的所有按钮,但是如果你只想检查某个HBox中的按钮,你可以在HBox组件的子数组上使用“some”函数,如下所示:

<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"/>