![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
В нижеприведенном коде каждый экземпляр myObj сам себя подписывает на событие myEvent.PROBA. Для примера экземпляр только 1.
И дальше базовый класс вызывает disptchEvent(myEvent.PROBA). При этом событияе элементу массива не доходит. Можно конечно делать rrr[0].dispacthEvent(), это работает, но тогда придется пробегать по всему массиву. Собственно, такой способ фактически равносилен вызову rrr[i].MyListener(), а хочется чтобы было именно через события. Чтобы один раз сделать dispatchEvent, а все слушатели мое событие приняли. root.dispatchEvent тоже не работает как хочется. Что я делаю не так, и как надо? public class mainclass extends Sprite{ var rrr:Array; function mainclass(){ super(); rrr=new Array(); rrr.push(new cMyObj() );//в массиве 1 элемент для примера addChild(rrr[0]); var m=new myEvent(myEvent.PROBA) dispatchEvent(m); } } public class cMyObj extends MovieClip{ function cMyObj (){ super(); addEventListener(myEvent.PROBA, MyListener); } function MyListener(ev:myEvent){ trace("ololo!"); } } |
|
|||||
|
Я, конечно, сонный и все такое, но...
У вас событие рассылается на уровень выше, чем ловится. Естественно, вы его поймать не можете. P.S., я понмиаю, конечно, что сложно иметь привычку именовать переменные, классы и т.п. разными способами в разных языках (я так понимаю, у вас тут в стиле C), но все же, лучше писать названия классов с большой буквы, а их полей и методов - с маленькой.
__________________
Дело не в тебе |
|
|||||
|
Цитата:
вот картинка, объясняющая как есть ![]() у меня родительский узел - это mainclass, а "узел child1" -это rrr[0], являющийся экземпляром класса cMyObj. почему событие не заходит в rrr[0] и как сделать правильно? Наверное, я тоже сонный и чего-то не понимаю. ps. ну да, привык в стиле С. Пускай тут уже так остается, чтоб избежать путаницы а впредь учту. |
|
|||||
|
Вы его генерите на уровне "Родительский узел", а слушать пытаетесь в "Узел Child 1".
Ладно, лучше я спать пойду ![]()
__________________
Дело не в тебе |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Не соответствует. События, если всплывающие, распространяются вверх, к родителям, а не вниз к детям.
|
|
|||||
|
Цитата:
Цитата:
addEventListener(myEvent.PROBA, MyListener, true); то тоже не работает. Как мне одним dispatchEvent разослать событие множеству объектов, которые это событие слушают, в моем Array? |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
И не будет работать, это в лучшем случае для мышиных событий подойдет.
В вашем случае налицо ошибка проектирования. Либо дети должны получать некий объект с данными, умеющий рассылать события (проще говоря, MVC), на него подписываться и изменять своё состояние, либо родитель сам должен изменять какие-то свойства детей. |
![]() |
![]() |
Часовой пояс GMT +4, время: 15:03. |
|
|
« Предыдущая тема | Следующая тема » |
|
|