![]() |
как подписать в качестве хендлера события функцию другого объекта?
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 =)
|
Для случая автора абсолютно нет смысла. Ему ведь нужно просто запускать чужую функцию при каком-то событии, а используя Event Dispatcher это забитие мухи микроскопом.
|
Цитата:
Код:
f.addEventListener(MouseEvent.CLICK, function(e:MouseEvent):void {Но, верно, это не для этого случая. Поспешил. |
Хватит извращатся! :)
Чел чето накодил там такое, что теперь приходиться что-то придумывать и делать это чере попу! Там явно все можно зделать более... эээ... умнее что ли... :) |
Цитата:
Остальное пусть обдумывает уже сам автор. |
Цитата:
|
Всем большое спасибо за ответы и критику. Картина ясна.
Жизнь сталкивает с проблемами, возникают различные вопросы, кот. приходиться решать. Чтобы не решать их через то место которое упомянул автор предыдущего поста, я и обратился сюда. |
| Часовой пояс GMT +4, время: 13:33. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.