2011-10-05 56 views
0

在上傳過程中,我需要禁用舞臺上的所有按鈕,除了取消上傳過程的按鈕。 我試過,但「myButton的」不斷被禁用:AS3 - 禁用除一個按鈕外的所有按鈕

stage.mouseChildren = false; 
mysection.mybutton.mouseChildren = true 

怎麼辦呢?

+0

將'mouseChildren'設置爲'false'將會禁止所有來自特定DisplayObject的子節點的鼠標事件。當你將它應用到'stage'時,你可以有效地抑制整個SWF中的所有*鼠標事件。您需要明確禁用必要的按鈕,或者找到一種方法將它們分組,以便您可以在一次調用中禁用它們。 – Peter

+0

你不能有那麼多的按鈕,爲什麼不只是一個一個禁用它們呢? – danii

回答

-1

下面的東西可能會幫助你。但你必須檢查語法錯誤,沒有時間檢查...如果你不能理清,請提出任何問題。

function findMyButton(doc:DisplayObjectContainer , n:String):void{ 
    for(var i:int=0; i<doc.numChildren; i++) 
    { 
    var btn:DisplayObjectContainer = this.getChildAt(i) as DisplayObjectContainer; 

    if(btn && btn.numChildren > 0){ 
     findMyButton(btn , n); 
    } 

     if(btn.name =="btn_upload") 
     { 
     btn.mouseEnabled = true; 
     } 
     else 
     { 
     btn.mouseEnabled = false; 
     } 

    } 

} 

// This ll allow you to disable or enable all your objects 
// so you can activate the button you like after you call this method. 
function conrolmyButtons(doc:DisplayObjectContainer , b:Boolean):void{ 
    for(var i:int=0; i<doc.numChildren; i++) 
    { 
    var btn:DisplayObjectContainer = this.getChildAt(i) as DisplayObjectContainer; 
    if(btn && btn.numChildren > 0){ 
     findMyButton(btn , n); 
    } 
    btn.mouseEnabled = b; 
    } 

} 
+0

您的代碼錯誤。 DisplayObject不能有任何子項。 換句話說。 do.numchildren <<<是不正確的。 你是底層DisplayObject層的繼承嗎? 運行你自己的代碼,你會注意到蹩腳的代碼。 –

+0

SimpleButton是InteractiveObejct。 InteractiveObject也不能有任何子... var btn:DisplayObjectContainer = this.getChildAt(i)as DisplayObjectContainer; <<<是什麼意思? 也許btn是簡單的按鈕。所以,爲什麼你強制將SimpleButton轉換爲DisplayObjectContainer?你的代碼不可用... –

+0

有沒有提到按鈕是SimpleButton?我無法看到有關它的任何信息。 – ymutlu