![]() |
создание произвольного количества кнопок и прослушивание их событий
Вопрос хоть и ламерский, но ответа найти не могу((
вообщем есть у меня много элементов, типа пользователи и у каждого есть своя кнопочка, как можно все эти кнопки вывести на показ и отслеживать события происходящие при их нажатии вот что я придумал есть массив с пользователями, ники, ip, прочая фигня туда же добавляем кнопки для каждого свои далее перебераем нужные мам элементы и рисуем кнопки на экране, дальше промблемма(( как сделать так что бы можно было каждой кнопке своего слушателя назначить , как динамически создать функции с разными именами. |
Сделай одного слушателя и кастомное событие, куда будет передеваться идентификатор конкретного пользователя либо другая нужная информация.
|
kelod, зачем Вам разные обработчики? Вы собираетесь делать разные действия с пользователями?
Stitch512, зачем создавать кастомное событие, если ссылка на кнопку есть в обычном MouseEvent? Кастомный MouseEvent Вы не создадите, а если надо просто передать айдишник кнoпки/юзера, то есть дефолтный DataEvent. |
Иногда удобнее в событие передать необходимые данные для обработки, чем получать их потом на строковому идентификатору, но если необходимости в этом нет то да, можно и дефолтным событием. Вообще зависит от задачи, но я абстрактным событиям типа MouseEvent предпочитаю пользовательские, меньше телодвижений для получения нужной информации в обработчике.
|
"Абстрактные события"? Не, не слышал. Событие без реализации, без экземпляра?
"событиям типа MouseEvent предпочитаю пользовательские" – боюсь только, InteractiveObject не разделяет Ваших вкусов. Расскажите, как Вы ловите клик по объекту, не подписываясь на MouseEvent? |
я всё равно сто то не пойму, если сделать 1 событие на несколько кнопок, как я узнаю которая нажата? не могли бы Вы привести примерчик кода, хотя бы приблизительный
|
узнать, какая нажата кнопка, можно с помощью свойства currentTarget объекта MouseEvent.
Код AS3:
|
кажется разобрался, присвоил кнопкам имена и теперь можно их через currentTarget.name различать)
|
совершенно верно.
А вот так можно к любому объекту обратиться по имени Код AS3:
|
Код AS3:
|
Цитата:
Код AS3:
|
А еще есть понятие "уменьшение зависимостей".
http://www.flasher.ru/forum/showthread.php?t=174189 Вот к примеру. Если MyClass заменить на GameButton, то не факт что MouseEvent.CLICK будет приходить правильно, и тем более не сработает конструкция e.currentTarget as MyClass. А изменение графического контента - довольная частая ситуация. Но если вместо этого отсылать событие ButtonClick к примеру, то подмена кнопок на остальной код не повлияет, главное чтобы эта кнопка также отсылала нужное событие. Я не хочу сказать что так прям всегда нужно делать, но при необходимости это имеет место быть. |
Цитата:
Читаем доки: Цитата:
|
Событие то будет правильно приходить, но если поверх главного спрайта лежат другие (слои состояний кнопок) то событие придет им. Можно им поставить mouseEnabled = false, но это частный случай решения проблемы, в любом случае есть вероятность что currentTarget будет отличаться.
Цитата:
И вообще, чем так не угодили кастомные события) |
Цитата:
Цитата:
Цитата:
|
| Часовой пояс GMT +4, время: 03:09. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.