![]() |
|
||||||||||
|
|
|
|||||
|
Всем привет.
Обсуждалось много раз, но все было что то не совсем то, что нужно =\ В общем, для начала хочу разобраться с глобальными событиями: Например, главный класс Main: package { import flash.display.MovieClip; import flash.events.Event; public class Main extends MovieClip { public function Main() { trace("I`m constructor"); var m = new myMC(); addChild(m); addEventListener("MY_EVENT", onEvent); } private function onEvent(e:Event):void { trace("Main.as -> onEvent"); } } } package { import flash.display.MovieClip; import flash.events.Event; import flash.events.MouseEvent; public class myMC extends MovieClip { public function myMC() { trace("I`m my MC"); addEventListener(MouseEvent.CLICK, onClick); addEventListener("MY_EVENT", onEvent); } private function onClick(e:MouseEvent):void { trace("click!"); dispatchEvent(new Event("MY_EVENT")); } private function onEvent(e:Event) { trace("onEvent -> myMC"); } } } Ага, Main не получил это событие, что в принципе логично. Подписав его под родителя Получаю: Событие вещал в главный класс, дети это событие не получили. В функции dispatchEvent всего 1 параметр, значит, пузырьковость указывать надо где то в другом месте. Единственный вариант который я вижу - это подписывать stage на события, но что то мне подсказывает, что код превратиться в быдло код. Да и подписывать parent тоже не айс, можно тогда пользоваться кастингом, все равно ведь идет обращение к parent. Кто что может сказать?
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Регистрация: Jul 2007
Адрес: Москва
Сообщений: 996
|
|
|
|||||
|
Черт, искал не в Event`e, а в dispatchEvent. Спасибо.
А что можешь сказать про глобальное событие? Все таки подписывать у stage?
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Регистрация: Jul 2007
Адрес: Москва
Сообщений: 996
|
Цитата:
Если принять stage за контроллер, то да. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
mre, вьювер у контроллера не подписывается. И вообще, о нём ничего знать не должен.
|
|
|||||
|
Эээмм... что то я не совсем понял =\
Все таки у stage, или искать контроллер (а что это?)
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Регистрация: Jul 2007
Адрес: Москва
Сообщений: 996
|
Цитата:
Хорошо, как быть в такой ситуации. В контроллер пришло событие. Ему нужно сделать что-то с объектом, который во view лежит через несколько уровней вложенности child-ов. Или view проектируется таким образом, что хранит ссылки на все объекты, которые может понадобиться изменить? |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Обрабатывать события вьюверов должен контроллер. Контроллер при этом не является визуальным объектом.
Добавлено через 1 минуту Цитата:
|
|
|||||
|
Регистрация: Jul 2007
Адрес: Москва
Сообщений: 996
|
Цитата:
Ну да, вариант ![]() |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
mre, ссылку на вьювер контроллер конечно же получает. Вот сам вьювер ссылки на контроллер в общем случае не должен иметь.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 14:26. |
|
|
« Предыдущая тема | Следующая тема » |
|
|