AS3 — отключить все кнопки, кроме одной

#actionscript-3

#actionscript-3

Вопрос:

Во время загрузки мне нужно отключить все кнопки на сцене, кроме одной, чтобы отменить процесс загрузки. Я пробовал это, но «mybutton» продолжает отключаться:

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

Как это сделать?

Комментарии:

1. Установка mouseChildren на false будет подавлять все события мыши, происходящие от любого дочернего элемента конкретного DisplayObject . Когда вы применяете это к stage , вы эффективно подавляете все события мыши во всем вашем SWF. Вам нужно явно отключить необходимые кнопки или найти способ сгруппировать их так, чтобы вы могли отключить их за один вызов.

2. У вас не может быть СТОЛЬКО кнопок, почему бы просто не отключить их одну за другой?

Ответ №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 amp;amp; 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 amp;amp; btn.numChildren > 0){
       findMyButton(btn , n);
    }
    btn.mouseEnabled = b;
  }

}
  

Комментарии:

1. Ваш код неверен. У DisplayObject не может быть дочерних элементов. Другими словами. do.numchildren<<< неверно. Вы понимаете наследование слоя DisplayObject? запустив свой собственный код, вы заметите дерьмовый код.

2. SimpleButton является интерактивным. У InteractiveObject также не может быть дочерних элементов… var btn:DisplayObjectContainer = this.getChildAt(i) как DisplayObjectContainer; <<< что это значит? возможно, btn — это simplebutton. итак, почему вы принудительно преобразовали SimpleButton в DisplayObjectContainer??? ваш код недоступен…

3. Есть ли какие-либо упоминания о том, что кнопки являются SimpleButton? я не вижу никакой информации об этом.