#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. хм, похоже, это не сработало. Синтаксических ошибок нет, но кнопки не функционируют