Форум 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=205596)

BAXTER 11.12.2013 04:15

НЕ работают кнопки
 
Вложений: 1
Помогите разобраться в простом коде. С помощью цикла создаю 5 кнопок (готовых с библиотеки). Работает только последняя. Что я делаю не так?

Dip52 11.12.2013 04:46

Я бы сделал так. В цикле добавил бы:
Код AS3:

button.addEventListener(MouseEvent.CLICK,onCLICK);

Потом бы убрал слушатель событий, который идёт после цикла. И всё.

А так всё логично: ты присваиваешь событие только последней кнопке, так как каждый раз, когда работает цикл, создаются уникальные "кнопки" и после окончания цикла они как бы перестают существовать, если к ним нету обращения (поэтому 4 кнопки без слушателя событий). Потом цикл перестаёт работать и новой кнопке (5) доступен выход за пределы цикла, дальше идёт присваивание слушателя событий, поэтому и у пятой кнопки "слушатель" работает. То есть, четыре предыдущих кнопки просто не вышли за пределы за цикла.

Если непонятно, то попробуй создать пять циклов, в каждом будет создавать по одной кнопке и после каждого цикла будет присваиваться событие.

BAXTER 11.12.2013 04:57

Огромное спасибо!!! Теперь все работает

caseyryan 11.12.2013 08:08

Цитата:

и после окончания цикла они как бы перестают существовать, если к ним нету обращения
Ничего там не перестает существовать. Кнопки добавляются в дисплей лист. Единственно, что происходит - это перезапись ссылки на кнопку в переменной. А так как после окончания цикла, переменной присваивается ссылка на последнюю кнопку, она там и остается.
Можно сделать так:
Код AS3:

for (var i:int = 0; i < 5; i++) {
    var button:MainButton = new MainButton();
    addChild(button);
}
addEventListener(MouseEvent.CLICK, onClick);
 
function onClick(e:MouseEvent):void {
    if (e.target is MainButton) {
          trace("работает");
    }
}



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

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