2010-10-06 65 views
0

我有幾個帶按鈕的HBox。我以編程方式使某些按鈕不可見。在某個時候,所有的按鈕都應該是不可見的。如何知道所有按鈕何時不可見?這樣做最簡單的方法是什麼?Flex:檢測按鈕不可見

每個按鈕的可見性都是獨立於其他按鈕確定的。

<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

最簡單的方式未必是最好的方式,但這樣的事情應該工作...從格雷戈爾

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

+1,我在想同樣的事情:) – 2010-10-06 17:55:34

+1

你可以將它們存儲在一個私有數組中(在creationComplete中初始化),使它更加優雅。 – Amarghosh 2010-10-07 04:21:37

+0

嗨格里戈基迪,非常感謝您的功能。最後,我找到了一個更簡單的解決方案。我有一個函數來處理按鈕是否被隱藏或不可見。我創建了一個設置爲按鈕總數的變量,然後在每次按鈕變爲不可見時遞減它。再次,非常感謝您的熱心幫助。 – Laxmidi 2010-10-07 14:40:52

1

回答上面組件中的所有按鈕的作品,但如果你只是要檢查按鈕一定HBox中內,你可以用「一些」功能在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"/> 

+0

嗨rosswil,謝謝你的解決方案。就我而言,我需要測試所有的HBox。無論如何,謝謝你的出色建議。 – Laxmidi 2010-10-07 14:47:39