![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Sep 2012
Сообщений: 204
|
Добрый день
У меня тут такая проблемка - надо было перегнать одну старую анимацию еще на AS1 в AS3. Там вся анимация основана на метках. Label. я перестроил все под код as3, но мне также необходимо регулировать некоторые другие процессы, в родительском контейнере (где лежит эта анимация), в зависимости, какая метка сейчас проигрывается. клип анимации называется main. из контейнера я обращаюсь трейс не проходит. Если сделать через currentFrame - та же история Как же тогда проверять фазу проигрывания анимации из вне? И еще, связанный вопрос- на каждом этапе анимации создается переменная со значением. доступ к этой переменной также не возможен, если она не обозначена в первом кадре анимации. Можно ли как то еще указать флешу, что мол вот- если играется эта метка, то надо считать переменную "х" ? |
|
|||||
|
А в какой системе делаете? Во Flash Pro или в Flash Builder/Flash Develop?
И сам код, с переменными, к которым не можете получить доступ, тоже не помешал бы Если создаете во Flash Pro через встроенную библиотеку мувиклипов, .currentFrame будет работать |
|
|||||
|
__________________
adobe AS3 manual |
|
|||||
|
Регистрация: Sep 2012
Сообщений: 204
|
итак, работаю я в данном случае в Flash Pro, т.к. кода то там код наплакал, в основном анимашки
код к переменным? ну вот например switch (this.position) { case 1 : this.offset = 3; break; case 2 : this.offset = 5; break; case 3 : this.offset = 7; break; } strangedk такой трейс проходит, и он показывает что фаза 1. Но показывает только потому что фаза 1 начинается с первого кадра. Если я поставлю трейст на другую фазу - то там ничего не срабатывает например в то время как если поставить трейс в самой анимации на 3-ей фазе, то там все показывает (в чем не было сомнений ) |
|
|||||
|
Регистрация: Jan 2009
Сообщений: 1,651
|
А где вы, это
Вставляете? В каком кадре? Я бы вообще пихал весь код в первый кадр. И для этого приведенного кода, я бы писал вот так: Так мне было бы надежней и понятней, чем то по какой системе компилятор AS3 компилирует код в кадрах.
__________________
мой пустой блог |
|
|||||
|
Регистрация: Sep 2012
Сообщений: 204
|
iflamberg
код пишется в первом и единственном кадре. В этом же кадре находитя 1 кадр с мувиклипом анимации именем main. А вот в main уже больше 100 кадров на enterFrame посадить не пробовал. Сейчас протестирую Испробовал - так он видит нужные lebel но можно ли сделать так чтобы нужное действие выполнилось только 1 раз? а то он выполняет функцию каждый кадр при совпадении метки |
|
|||||
|
Регистрация: Jan 2009
Сообщений: 1,651
|
Отпишитесь от события enterFrame, когда оно больше не нужно:
main.addEventListener (Event.ENTER_FRAME, efHr); function efHr (e:Event):void { if (main.currentLabel == "3"){ //делаем что надо main.removeEventListener (Event.ENTER_FRAME, efHr); } }
__________________
мой пустой блог |
|
|||||
|
Регистрация: Sep 2012
Сообщений: 204
|
эмм... я об этом и подумал сначала, но не очень удобно будет создавать 10 отдельных слушателей, на 10 различных фаз. Но ладно, пусть хоть так.
Спасибо за помощь! |
|
|||||
|
Если "фаза" должна повториться только один раз, то создайте массив, и заносите в него те фазы которые уже выполнились. Слушатель здесь один должен быть. И когда все они выполнятся, тогда отписывайтесь от слушателя.
__________________
adobe AS3 manual |
|
|||||
|
Регистрация: Sep 2012
Сообщений: 204
|
да тут все гораздо сложнее. Дело в том что есть еще возможность возврата к прошедшим фазам. По клику кнопки можно просмотреть каждую фазу по отдельности.
Получается следующее - 1) кнопками можно переключать фазы (тут никаких проблем) 2) сами фазы независимо от нажатий кнопок будут идти вперед и меняться. |
![]() |
![]() |
Часовой пояс GMT +4, время: 06:49. |
|
|
« Предыдущая тема | Следующая тема » |
|
|