![]() |
как управлять системой событий?
Господа, внемлите душераздирающему воплю!
Что есть: Есть два слоя, на каждом из которых лежит мувик. Чередой производственных мероприятий определённый скрипт синхронно создаёт в каждом из вышеописанных мувиков по, собственно, мувику и назначает каждому новорожденному фукцию обработки события onmousedown в которой всего-навсего вызывается trace(this). Что ожидал: Я, как душа весьма доверчивая, ожидал, что сначала mousedown обработается для всех дочерних объектов того мувика, что лежит сверху в палитре слоёв. Т.е. я думал что флеш будет проходиться по иерархии строго последовательно. Что получилось: Собственно, оказалось, что при динамическом создании мувиков флеш размещает объекты иерархично только в системе, отвечающей за отображение. Т.е. дочерние объекты мувика, что лежит в верхнем слое будут всегда перекрывать дочерние объекты нижнего мувика. Это хорошо. Но вот события обрабатываются в порядке, обратном созданию этих мувиков. Что надо: Надо, чтобы сначала флеш обработал события mousedown сначала всех дочерних объектов верхнего мувиков, а потом всех нижнего, т.е. также как получилось бы при статическом содании объектов. Что не надо: Советы, аля "в mousedown'е рута пройтись циклом по всем дочерним объектам одного мувика потом другого" мне не нужны ибо сам не дурак :). Меня интересуют возможности управления событийной системой во флеше и советы тех, кто решал подобные задачи. Заранее огромное спасибо. |
Длинно, мутно и много нопределенных терминов. Если приложишь ма-а-ленький исходник будет проще. А так я даже не понял о чем ты - то ли о динамической загрузке объектов то ли об их инициализации ;)
|
Цитата:
2alex_h_gerto вам, товарисч, на стихи.ру, пожалуй :)) приоритет выполнения обработчиков событий зависит от порядка создания клипов. это верно. порядок создания клипов в главной линейке указан в паблиш сеттингсах в графе Load Order. если там поменять с дефолтового Bottom Up на Top Down, то порядок выполнения обработчиков, навешенных на клипы созданные вручную в линейке изменится. (для клипов лежащих в одном слое первым выполняется тот обработчик, который прикреплен к клипу с большим z-индексом (глубиной)). для динамических клипов важен только порядок создания, не глубина. клип созданный последним выполняет свои обработчики первым (стек LIFO). |
Цитата:
Цитата:
Тогда, выходит, остаётся только реализовывать систему событий собственными руками. От лица всех огорошенных ожидаемыми, но безрадостными знаниями выражаю глубокую признательность :) Спасибо! |
так почему бы не позаботиться о правильном порядке создания клипов ?
нужно только централизовать код, который создаёт клипы. |
а вот я еще велосипед придумал :)
очередной... Код:
ASBroadcaster.initialize(_root);если ничего не менять. то обработчики выполняются в порядке вызова addListener для всех объектов подписанных на это событие. ссылки на слушающие объекты помещаются в массив _listeners внутри объекта-передатчика событий. этот массив можно переколбасиь как угодно, и обработчики будут выполняться именно в том порядке, в каком объекты расположены в этом массиве. аминь :) |
Цитата:
Самое смешное, что да, событийная система определяется LIFO, а визуализируются те же самые динамические клипы в строгом соответствии с иерархией. Т.е., дочерний объект верхнего мувика всегда перекроет дочерний нижнего, даже если дочерние нижнего создавались последними.. Именно такое несоответствие меня и огорчает :) |
| Часовой пояс GMT +4, время: 18:39. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.