![]() |
Динамические кнопки и обработчики
Добрый день, по циклу создаю кнопки. Хочу к ним привязать действия.
В итоге кнопки создаются выводятся на экран но события не обрабатываются. Код AS3:
|
Для оформления своего кода надо использовать теги [as3][/as3]
|
В цикле создаешь кнопки,
далее в этом же цикле создаешь массив, в массив загоняешь каждую кнопочку, массив подписываешь на событие, а в обработчике обратиться к конкретной кнопке можно через, e.target - это объект из массива. |
Еще вопрос, кнопки с Вашей помощью создал код такой:
Код AS3:
Код AS3:
at main_fla::MainTimeline/allElements() |
Код некрасивый. Последний кусок с ошибкой.
Вы передаёте вместо индекса с которого удалить объект сам объект в removeChildAt. Я подозреваю, вы хотели написать просто removeChild. Но так или иначе, один(последний добавленный) элемент массива удалён не будет, сами угадайте, почему. Добавлено через 2 минуты И прикол в том, что вы скорее всего случайно удалили сам MainTimeline из DL :D Поэтому ссылка на stage пропадает, скорее всего, и вылетает эта ошибка. Добавлено через 8 минут Секунду, на лицо непонимание различий между stage.addChild и просто addChild. Объясняю: stage.numChildren == 1 в самом начале. trace(stage.getChildAt(0)); == object MainTimeline. На сцене находится главная линия времени. Когда вы пишете addChild(item), вы неявно используете this.addChild(item), тоесть добавляете item не рядом с MainTimeline, а в дисплей лист самого MainTimeline(который изначально пуст). Удаляя item из stage не удалит объект, который вы добавляли в Main, так как его попросту там нет. Да, stage.contains(item) выдаст true, потому, что этот метод учитывает вложенности. Добавлено через 12 минут P.S. код очень некрасивый. |
vlbuto плиз, напишите тут или пришлите мне пример кода, как сделать, а то давно про это читал, но без примера не врубаюсь, использую другие подходы
|
Попробуйте так, без stage.(removeChildAt)
Код AS3:
|
dimarik, да действительно, такой вариант проходит, и видимо объекты с цены удаляются, судя по логу, но в результате сцена стает черной и ничего на ней невидно. в чем может быть причина?
|
Antonpro, вы мой ответ читали?
|
ZackMercury, безусловно читал, если я правильно понял я случайно удаляю таймлайн, но это было при удалении
Код AS3:
Код AS3:
|
Я не понимаю, как у вас это работает.
У вас по ссылке item[lectioncount] хранится объект, removeChildAt принимает int. Может, вы хотели написать removeChild(item[lectionCount]); ? Добавлено через 2 минуты И последний добавленный объект не удалится, потому, что цикл криво написан. |
Цитата:
На такие вопросы обычно может ответить дебаггер, либо, если не владеете дебаггером, а вы им не владеете, то выложенный сюда *.fla файлик, с присутствующей в нем неподобающим поведением, поможет нашим добрым людям найти и указать на ошибку. |
может кто-то помочь разобраться?
|
могу, если fla-файл выложите на форум
|
| Часовой пояс GMT +4, время: 21:31. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.