![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Apr 2004
Сообщений: 5
|
Господа, внемлите душераздирающему воплю!
Что есть: Есть два слоя, на каждом из которых лежит мувик. Чередой производственных мероприятий определённый скрипт синхронно создаёт в каждом из вышеописанных мувиков по, собственно, мувику и назначает каждому новорожденному фукцию обработки события onmousedown в которой всего-навсего вызывается trace(this). Что ожидал: Я, как душа весьма доверчивая, ожидал, что сначала mousedown обработается для всех дочерних объектов того мувика, что лежит сверху в палитре слоёв. Т.е. я думал что флеш будет проходиться по иерархии строго последовательно. Что получилось: Собственно, оказалось, что при динамическом создании мувиков флеш размещает объекты иерархично только в системе, отвечающей за отображение. Т.е. дочерние объекты мувика, что лежит в верхнем слое будут всегда перекрывать дочерние объекты нижнего мувика. Это хорошо. Но вот события обрабатываются в порядке, обратном созданию этих мувиков. Что надо: Надо, чтобы сначала флеш обработал события mousedown сначала всех дочерних объектов верхнего мувиков, а потом всех нижнего, т.е. также как получилось бы при статическом содании объектов. Что не надо: Советы, аля "в mousedown'е рута пройтись циклом по всем дочерним объектам одного мувика потом другого" мне не нужны ибо сам не дурак . Меня интересуют возможности управления событийной системой во флеше и советы тех, кто решал подобные задачи.Заранее огромное спасибо. Последний раз редактировалось alex_h_gerto; 06.04.2004 в 18:12. |
|
|||||
|
Длинно, мутно и много нопределенных терминов. Если приложишь ма-а-ленький исходник будет проще. А так я даже не понял о чем ты - то ли о динамической загрузке объектов то ли об их инициализации
![]()
__________________
судью - на мыло, из игроков - вить веревки. |
|
|||||
|
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
Цитата:
2alex_h_gerto вам, товарисч, на стихи.ру, пожалуй :)) приоритет выполнения обработчиков событий зависит от порядка создания клипов. это верно. порядок создания клипов в главной линейке указан в паблиш сеттингсах в графе Load Order. если там поменять с дефолтового Bottom Up на Top Down, то порядок выполнения обработчиков, навешенных на клипы созданные вручную в линейке изменится. (для клипов лежащих в одном слое первым выполняется тот обработчик, который прикреплен к клипу с большим z-индексом (глубиной)). для динамических клипов важен только порядок создания, не глубина. клип созданный последним выполняет свои обработчики первым (стек LIFO). Последний раз редактировалось Nox Noctis; 06.04.2004 в 18:41. |
|
|||||
|
Регистрация: Apr 2004
Сообщений: 5
|
Цитата:
![]() Цитата:
Тогда, выходит, остаётся только реализовывать систему событий собственными руками. От лица всех огорошенных ожидаемыми, но безрадостными знаниями выражаю глубокую признательность Спасибо! |
|
|||||
|
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
так почему бы не позаботиться о правильном порядке создания клипов ?
нужно только централизовать код, который создаёт клипы. |
|
|||||
|
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
а вот я еще велосипед придумал :)
очередной... ASBroadcaster.initialize(_root);
_root.onMouseDown = function() {
this.broadcastMessage("onClick");
};
//
_root.createEmptyMovieClip("a", 1);
_root.createEmptyMovieClip("b", 2);
_root.createEmptyMovieClip("c", 3);
_root.createEmptyMovieClip("d", 4);
_root.createEmptyMovieClip("e", 5);
//
test = function () {
trace(this);
};
//
a.onClick = b.onClick=test;
c.onClick = d.onClick=test;
e.onClick = test;
//
_root.addListener(a);
_root.addListener(b);
_root.addListener(c);
_root.addListener(d);
_root.addListener(e);
//
trace(_root._listeners);
_root._listeners.reverse();
trace(_root._listeners);
если ничего не менять. то обработчики выполняются в порядке вызова addListener для всех объектов подписанных на это событие. ссылки на слушающие объекты помещаются в массив _listeners внутри объекта-передатчика событий. этот массив можно переколбасиь как угодно, и обработчики будут выполняться именно в том порядке, в каком объекты расположены в этом массиве. аминь :) |
|
|||||
|
Регистрация: Apr 2004
Сообщений: 5
|
Цитата:
Самое смешное, что да, событийная система определяется LIFO, а визуализируются те же самые динамические клипы в строгом соответствии с иерархией. Т.е., дочерний объект верхнего мувика всегда перекроет дочерний нижнего, даже если дочерние нижнего создавались последними.. Именно такое несоответствие меня и огорчает ![]() Последний раз редактировалось alex_h_gerto; 06.04.2004 в 20:21. |
![]() |
Часовой пояс GMT +4, время: 14:39. |
|
|
« Предыдущая тема | Следующая тема » |
|
|