Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   слушатель для созданых кнопок в цикле (http://www.flasher.ru/forum/showthread.php?t=183118)

Koby 12.08.2012 22:40

слушатель для созданых кнопок в цикле
 
Здравствуйте, после многих попыток мне так и не удалось сделать: у меня создано 10 одинаковых кнопок

Код AS1/AS2:

for (i=0;i=10;i++)
{
 var button = new can_btn;
addChield(button);
//can_btn это movie clip
}

помогите создать такой Слушатель, который в зависимости от номера кнопки, допустим, выдаст этот номер в какое либо текстовое поле.

Silicium 12.08.2012 22:49

Зачем тему повторять?
Код AS3:

...
button.addEventListener(MouseEvent.CLICK, clickHandler);
...
 
function clickHandler(event:MouseEvent):void
{
      event.currentTarget; // Ссылка на экземпляр кнопки, по которому кликнули. В зависимости от нее вызываете уже из обработчика события нужный метод.
}


Wolsh 12.08.2012 22:49

-De- : как передать параметр в слушатель

Silicium 12.08.2012 22:50

Но вот вопрос: зачем цикл, если каждой кнопке нужно назначить свой обработчик? Тут цикличность создания кнопки теряет свой смысл.

Добавлено через 1 минуту
По моему тут речь не о передаче параметра в слушатель, судя по предыдущей теме, именно о разных обработчиках в принципе.

caseyryan 12.08.2012 22:52

Для программы не существует никакого номера кнопки. Чтобы ей было понятно что там за номер, его нужно явно задать. Для этого самый размный вариант - создать класс для кнопки, в котором добавить переменную number или что-то типа того.
Ну или воспользоваться свойством name этого мувиклипа и присвоить туда номер.
а получить ссылку на нажатую кномку просто:

Код AS3:

for (var i:int =0; i < 10; i++)
{
 var button = new can_btn();
button.addEventListener(MouseEvent.CLICK, onButtonClick);
addChield(button);
//can_btn это movie clip
}
function onButtonClick(e:MouseEvent):void {
      trace(e.currentTarget); // это нажатая кнопка
}

п.с. Использовать нетипизированные переменные в АС3 - моветон, так же как и инициализировать объект класса не используя скобок конструктора ()

КорДум 12.08.2012 22:53

Код AS3:

for (var i:int =0; i = 10; i++)

Вы уверены, что у вас создано 10 кнопок?

Silicium 12.08.2012 22:56

Я не уверен, что и к отображению они добавляются:
Цитата:

Код AS3:

addChield(button);


Просто видимо автор прямо тут код набирал, и опечатался:)

caseyryan 12.08.2012 22:57

КорДум, четко подмечено ) я и не заметил, что у него там знак равенства

Koby 12.08.2012 23:24

извиняюсь за ошибки, но смысл не меняется:)

спасибо за ответы, но ещё один вопрос
так как кнопки у меня создаются в другой функции, получается к кнопкам можно обратится только из этой функции..

КорДум 12.08.2012 23:25

Сохраняйте ссылки в массив. Массив должен быть объявлен в пределах класса (хотя, думаю, в вашем случае - кадра), не в методе.


Часовой пояс GMT +4, время: 09:59.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.