![]() |
как подписать в качестве хендлера события функцию другого объекта?
subj
Здесь (http://flasher.ru/forum/showthread.php?t=79873) понятно написано как это делать в одном классе. А как правильно указать то, что обработчик является методом другого класса? Так или нет? addEventListener(MouseEvent.CLICK, экземлярДругогоКласса.handler); И есть ли возможность отлова события в каких либо объектах не подписанных на обработку. Предположим у меня есть некоторый объект, кот. посылает некое событие и неизвестно существует ли он на данный момент или нет. И есть некоторые объекты, кот. должны обработать это событие, если оно вдруг произойдет, но они не знают создан ли объект или нет, да и не надо им это знать. Как правильно реализовать такое? Спасибо. |
так низя делать. обработчики должны быть приватными.
|
1. Можно подписать любой обработчик из области видимости:
Код:
addEventListener(MouseEvent.CLICK, экземлярДругогоКласса.handler); |
Единственное требование, handler должен иметь 1ым аргументом Event, или что нибудь что пройдет как Event (* или Object)
|
Лучше см. пост #2.
|
Если listener сделать публичным.
Main.as3: Код:
package {Код:
package fooКод:
package barВ Main.as3: Код:
package {Код:
public function getClickListener(e:MouseEvent):FunctionКод только для примера, набросал не для реального применения. |
Плохой пример.
|
Я знаю.
|
Я бы делал так:
Код:
public class ClassWithEvents {Код:
public class ClassWithEvents {Код:
var a:ClassWithEvents = new ClassWithEvents();Код:
var a:ClassWithEvents = new ClassWithEvents(somePrivateFunction); |
А можно просто напросто заюзать event dispatcher =)
|
| Часовой пояс GMT +4, время: 19:19. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.