![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: May 2009
Адрес: Санкт-Петербург
Сообщений: 79
|
Есть главный класс Main. В нем создается экземпляр класса ChildClass и добавляется в список отображения. Необходимо чтобы событие, отправляемое экземпляром класса ChildClass могло прослушиваться в родителе этого экземпляра.
Листинг Главный класс приложения package { import flash.display.MovieClip; import flash.events.*; public class Main extends MovieClip { var child1:ChildClass; public function Main() { addEventListener(ChildClass.NEWEVENT,newEventHandler); child1=new ChildClass(); addChild(child1); } private function newEventHandler(e:Event):void{ trace("событие произошло"); } } } класс в котором происходит диспечеризация события package { import flash.display.MovieClip; import flash.events.*; public class ChildClass extends MovieClip { public static const NEWEVENT="newevent"; public function ChildClass() { dispatchEvent(new Event(ChildClass.NEWEVENT,true)); } } } Не могу понять почему не работает В колин_муке написано: Система иерархической диспетчеризации событий языка ActionScript позволяет каждому контейнеру отображаемых объектов регистрировать приемники для обработки событий, получателями которых являются отображаемые объекты-потомки этого контейнера. Последний раз редактировалось Maestro13; 30.12.2009 в 18:07. |
|
|||||
|
Может быть
stage.addChild(child1); заменить на addChild(child1);
__________________
Стой! Опасная зона! Работа мозга! |
|
|||||
|
Регистрация: May 2009
Адрес: Санкт-Петербург
Сообщений: 79
|
Так stage.addChild(child1); и addChild(child1); тоже самое
Добавлено через 55 секунд в данном случае Добавлено через 13 минут кстати если регистрирую событие child1.dispatchEvent(new Event(ChildClass.NEWEVENT,true)); в главном классе, тогда все работает, но мне нужно, чтобы событие регистрировалось именно в классе childClass. |
|
|||||
|
Ну дык цель вашего события - экземпляр ChildClass(). Если вы его подпишите на прослушку, то получите трейс. Но конечно же не тот, который в конструкторе, ибо пока не выполнится конструктор, вы подписаться не сможете.
|
|
|||||
|
Регистрация: May 2009
Адрес: Санкт-Петербург
Сообщений: 79
|
А тоесть нужно сначала чтобы выполнился конструктор а потом уже подписываться на это событие?
|
|
|||||
|
во первых, stage и этот мувик Main не одно и то же: при добавлении child1 на stage событие никак не попадает в Main..(т.е тогда и слушать надо stage)
во вторых, событие вещается до того как child1 добавлен в дисплейЛист т.е. проверять-то надо после addChild(child1); Последний раз редактировалось silin; 30.12.2009 в 17:50. |
|
|||||
|
Регистрация: May 2009
Адрес: Санкт-Петербург
Сообщений: 79
|
Сделал так, работает!
package { import flash.display.MovieClip; import flash.events.*; public class ChildClass extends MovieClip { public static const NEWEVENT="newevent"; public function newEvent():void{ dispatchEvent(new Event(ChildClass.NEWEVENT,true)); } } } package { import flash.display.MovieClip; import flash.events.*; public class Main extends MovieClip { var child1:ChildClass; public function Main() { child1=new ChildClass(); addChild(child1); addEventListener(ChildClass.NEWEVENT,newEventHandler); child1.newEvent(); } private function newEventHandler(e:Event):void{ trace("событие произошло"); } } } Последний раз редактировалось Maestro13; 30.12.2009 в 18:11. |
|
|||||
|
.
|
ChildClass от чего отнаследован? Объясните, почему у него такое название?
|
![]() |
![]() |
Часовой пояс GMT +4, время: 23:16. |
|
|
« Предыдущая тема | Следующая тема » |
|
|