Я работаю над игрой, в которой пользователи могут выигрывать кнопки / значки в качестве наград.По моим оценкам, всего будет получено около 500 наград.
Я хочу разрешить пользователям продавать свои дубликаты / нежелательные значки банку и покупать новые в банке.
Япоказывая значки в нескольких рамах награды.Ниже значков я показываю счетчик, а также кнопки «Купить» и «Продать».
Мой вопрос таков: как лучше всего обрабатывать ОЧЕНЬ МНОГИЕ кнопки покупки и продажи?Есть ли способ обойти кодирование 1000 eventListeners и 1000 eventHandlers?
Одним из возможных решений является постепенное присвоение имен моим кнопкам, например "buy_mc1", "buy_mc2" и т. Д. Затем выполните цикл для создания прослушивателей для этого ["buy_mc" + i].Тем не менее, я должен был бы ОЧЕНЬ убедиться, что я правильно связал их с наградами.
В настоящее время в моей базе данных есть поле "award_mc", в котором хранится название мувиклипа в моем .fla,Из этого я могу получить доступ к связанным активам, таким как поле count, например: this [db.award_mc + "_count"]. Txt.
К сожалению, этот метод не очень хорошо подходит для зацикленного доступа.
Может быть, я смогу создать массив имен видеоклипов, которые будут синхронизированы с кнопками покупки / продажи.Например:
myArray = {aMissionAward, anotherAward, ubernessAward};
Мои кнопки будут такими: buy_0, buy_1, buy_2 и т. Д.
Когда кто-то нажимает кнопку,Я могу связать buy_2 с «ubernessAward», а затем искать «ubernessAward» в базе данных.
Как я могу получить номер с кнопки?Даже если мне удастся выполнить настройку eventListeners, придется ли мне настраивать отдельные события EventHandlers для обработки правильного номера индекса?
Я открыт для предложений по другому способу сделать это.
-------------------------- РЕДАКТИРОВАТЬ ----------------------------
Вот мое решение.Попросите Йенса Струве указать мне правильное направление.
Мне не удалось заставить это работать с кнопками на сцене.Судя по всему, кнопки являются статическим классом.MovieClips являются динамическими, поэтому я смог заставить это работать с помощью MovieClips.Вот что я сделал:
Добавил 3 мувиклипа на сцену.Назвали их «mc0», «mc1» и «mc2».
Добавьте этот код AS3:
for (var i:Number=0; i<3; i++)
{
this["mc" + i].addEventListener( MouseEvent.CLICK, onMcClick );
this["mc" + i].awardKey = i;
}
function onMcClick( evt:MouseEvent ):void
{
trace("MC ID = " +(evt.target).awardKey);
switch ((evt.target).awardKey)
{
case 0:
trace(" Do stuff for 0");
break;
case 1:
trace(" Do stuff for 1");
break;
case 2:
trace(" Do stuff for 2");
break;
}
}
Отсюда я могу связать awardKey с массивом имен MovieClip.Затем я могу использовать имена MovieClip для чтения моей базы данных.
Вот почему я впервые сталкиваюсь со Stack Overflow, когда у меня возникает проблема.:)