![]() |
Создание функций в цикле
Есть цикл в котором создаются кнопки, по нажатию каждой из которых должен запускаться соответствующий ей метод.
пример цикла: Код AS3:
Помогите, пожалуйста, сделать корректное создание хендлеров с выводом идентификатора его кнопки. |
Анонимные функции – зло. Создайте одну функцию.
Код AS3:
|
Цитата:
|
Цитата:
Не может быть того, чтобы кнопки можно было нажать мышью, но при этом нельзя было повесить никаких слушателей. По-моему только с SimpleButton какая-то фигня подобная |
Цитата:
|
я тоже не понял прикола с невозможнстью повесить мышиные слушатели при том, что 'нужно выводить при нажатии на нее ее id'
по сути вопроса в этом анонимном handler'е видна var btn:UIButton, которая после отработки цикла естественно указывает на последний, а нужна ссылка на конкретный экземпляр т.е. если нужен изврат с определением handler именно в цикле, то как-то так это может быть (это только для посмотреть, здесь конечно логичнее этот handler в самом UIButton и определить) Код AS3:
|
А на клик вы водписываете stage или другой контейнер, и потом смотрите где клик упал, и именно тот объект который находится под курсором и ловит его ?
|
Цитата:
Так кто же прав, когда GC одинаков почти в этих 2х языках? |
silin, я описал почему нет возможности - мои объекты не являются наследниками экранных объектов флеша, они все просто набор информации о пикселях и в каком месте их рисовать в общем битмап-листе, выводимом на экран. Да, я жертвую слушателями (хотя, редко когда они действительно мне нужны) взамен скорости.
Цитата:
Цитата:
|
А если объекты накладываются друг на друга, как вы вычислите кто ловит событие ?
|
дада, мы поняли, что объекты не визуальные, просто в этом контексте фразы типа "при нажатии на них" или "объект, находящийся под курсором" немного забавно звучат, не ?
|
Цитата:
silin, согласен, неточно описал ситуацию. Давно уже не работаю со слушателями, использую колбэки, поэтому просто вылетело из головы дать пояснение сразу. |
in4core, прав дебаггер, который при возникновении ошибки сможет сказать в какой функции она произошла. И окей, специально для вас поправлюсь: я считаю, что использование анонимных функций в ActionScript 3.0 – зло.
|
Цитата:
|
Цитата:
|
Цитата:
Цитата:
|
и действительно..
"а вы в курсе, что где-то есть то, чего там на самом деле нет, но какая разница.." Александр, прежде чем сделать попытку блестнуть тем, чего на самом деле нет наведите справки. |
Цитата:
|
Цитата:
Цитата:
Цитата:
Цитата:
|
Про сравнение анонимности как-то товарищ expl писал:
Цитата:
|
По вопросу.
Ссылка на btn одна в рамках создания всех анонимной функции для UIButton, поэтому в анонимной функции по этой ссылке будет последний экземпляр. Как сделать для каждой анонимной функции свою ссылку? вызвать метод аргументом которого будет нужная ссылка на нужный экземпляр, например: Код AS3:
1. бережем память на компьютере пользователя (каждый экземпляр UIButton = новый handler, и если в анонимной функции используется что-то кроме аргументов которые передаются в неё, то она некогда не отчистится из памяти) 2. бережем глаза и свой мозг, так как никаких удобных инструментов (подсветка, переходы по F3) никакая среда разработки не предоставит как это усовершенстовать? Код AS3:
Всё вроде хорошо, но если слушателей много, а вызывается всего один? Такак как этот объект не DisplayObject, Нужно унаследоваться от EventDispatcher (или имплементировать методы интерфейса IEventDispatcher и реализовать их с методами экземпляра EventDispatcher) при вызове дергать dispatchEvent(new MouseEvent(MouseEvent.CLICK));, а подписываться так же как и к DisplayObject btn.addEventListener(MouseEvent.CLICK, onClick); |
| Часовой пояс GMT +4, время: 16:48. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.