![]() |
|
||||||||||
|
|||||
|
Регистрация: Mar 2007
Сообщений: 319
|
По вопросу.
Ссылка на btn одна в рамках создания всех анонимной функции для UIButton, поэтому в анонимной функции по этой ссылке будет последний экземпляр. Как сделать для каждой анонимной функции свою ссылку? вызвать метод аргументом которого будет нужная ссылка на нужный экземпляр, например: for (var i:int= 0; i < 10; i++) { var btn:UIButton = new UIButton(); btn.id = i; btn.handler = function (btn):Function { return function () { trace(btn.id) }; }(btn); } 1. бережем память на компьютере пользователя (каждый экземпляр UIButton = новый handler, и если в анонимной функции используется что-то кроме аргументов которые передаются в неё, то она некогда не отчистится из памяти) 2. бережем глаза и свой мозг, так как никаких удобных инструментов (подсветка, переходы по F3) никакая среда разработки не предоставит как это усовершенстовать? for (var i:int= 0; i < 10; i++) { var btn:UIButton = new UIButton(); btn.id = i; btn.handler = handlerUIButton; } function handlerUIButton(btn:UIButton):void { trace(btn.id); } Всё вроде хорошо, но если слушателей много, а вызывается всего один? Такак как этот объект не DisplayObject, Нужно унаследоваться от EventDispatcher (или имплементировать методы интерфейса IEventDispatcher и реализовать их с методами экземпляра EventDispatcher) при вызове дергать dispatchEvent(new MouseEvent(MouseEvent.CLICK));, а подписываться так же как и к DisplayObject btn.addEventListener(MouseEvent.CLICK, onClick); Последний раз редактировалось Nooob; 22.03.2013 в 02:16. |
![]() |
Часовой пояс GMT +4, время: 11:53. |
|
|
« Предыдущая тема | Следующая тема » |
|
|