![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Oct 2001
Сообщений: 146
|
Написал игру, в которой постоянно использовал конструкцию типа:
attachMovie(name, newname, d); newname.onEnterFrame = foo; Только вот теперь это надо под пятерку перевести, а там вторая строчка не будет работать. Я вот и хочу спросить - как прикрепить обработчик события onEnterFrame к клипу, который лежит в библиотеке? Спасибо. |
|
|||||
|
да, это, конечно, не два бита переслать!
процентов 40 будешь переделывать точно! есть два варианта: 1. на мувик вешаешь конструкцию типа onClipEvent (enterFrame) { ...do something... } этот мув запихнуть еще в один - контейнер, и потом аттачить этот и другие контейнеры. Для универсальности запихнуть всю исполняемую логику в функции и положить их, например, в руте, а уже из мувиков(контейнеров) обращаться к функциям передавая им нужные параметры. 2. можно извратиться и сделать управляющий трехкадровый мувик, суть его - в эмуляции onEnterFrame. Тоесть, лежит у тебя на столе трехкадровый мувик без дела, когда надо, говоришь ему: "запустика мне в цикле вон ту функцию". Тут надо запускать функцию через функцию(передавать в качестве параметра имя другой функции). Естественно, принимающая функция находится в трехкадровом мувике. Ну еще несколько флагов надо будет добавить! Вобщем принцип, думаю, понятен! ![]() |
|
|||||
|
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
хм... придется соорудить что-то вроде FLEM'a...
только полностью ФЛЕМ канеш, городить незачем... — делаем клип, на котором есть онКлипЕвент(ентерФрейм) (назовем, например, 'controller') пишем на этом клипе: for (i in listeners) { listeners[i].onEnterFrame(); } — определяем две вспомогательные функции controller.addListener = function (href) { this.listeners.push(href); } controller.removeListener = function (href) { for (i in this.listeners) { if (this.listeners[i]==href) { this.listeners.splice(i, 1); } } } — теперь после каждой строчки newname.onEnterFrame = foo; дописываешь controller.addlistener(newname); если у тебя есть где-то удаление онЕнтерФрейма, то дописываешь соответственно controller.removelistener(something); ...все просто :) и не так чтобы много переделывать на самом деле только если клипов с онЕнтерФреймом будет очень много - то придется еще контроллеров поставить... чтобы цикл длинный все не вешал если сделать контроллер аттачем - то можно легко добавить еще, когда уже нужно разбить цикл на части Последний раз редактировалось Nox Noctis; 03.10.2002 в 16:40. |
![]() |
Часовой пояс GMT +4, время: 22:32. |
|
|
« Предыдущая тема | Следующая тема » |
|
|