распознавание нажатий кнопок в actionscript

#actionscript #button

#actionscript #кнопка

Вопрос:

В мини-флеш-игре у меня есть несколько разных кнопок выбора уровня, и все они привязаны к одной функции «levelChange ()», и мне просто интересно, есть ли атрибут, который хранит, какая кнопка была нажата, или как определить, какая кнопка была нажата, если нет.

Спасибо

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

1. Вы могли бы уточнить, вы делаете это в Actionscript 3 или 2? Кроме того, если вы делаете это в 2, вы прикрепляете скрипт непосредственно к кнопке? Я дам ответ для AS3, но это может оказаться бесполезным, если этот вопрос касается AS2.

Ответ №1:

попробуйте currentTarget свойство MouseEvent примера:

 function buttonClick(event:MouseEvent):void
{
     trace(event.currentTarget);
}
  

Я рекомендую вам хранить свои кнопки в переменных вне вашей функции следующим образом:

 var levelOne:MovieClip = levelOne;
  

Таким образом, вы можете позже вызывать их следующим образом:

 function buttonClick(event:MouseEvent):void
{
     if (event.currentTarget == levelOne) {
          trace("level one selected");
     else if (event.currentTarget == levelTwo) {
          trace("level two selected");
     }
}
  

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

1. Это именно то, что я написал, за исключением того, что вы используете оператор IF вместо switch.

2. @DustinSparks вы искали имя против имени экземпляра, которое Сэм не смог заставить работать, и я почувствовал, что currentTarget это должно быть выделено. В конце концов, Сэм нашел это полезным.

Ответ №2:

Если вы используете AS3, вы можете добавить оператор switch в свою функцию levelChange() .

Например …. если у вас есть 2 кнопки, одна с именем экземпляра «level1», а другая «level2».

 function levelChange( me:MouseEvent ):void
{
   switch( me.currentTarget.name )
   {
      case "level1":
        // Go to Level 1 here.
      case "level2":
        // Go to Level 2 here. 
   }
}
  

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

1. хм, похоже, это не сработало. Синтаксических ошибок нет, но кнопки не функционируют