2011-10-05 101 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