![]() |
Проблемы с анимацией
Вложений: 1
Недавно начал изучать actionscript 3. Сейчас пытаюсь разобраться с анимацией передвижения и возникла следующая проблема. Есть персонаж, анимации находятся в его символе(movieclip), c 1-24 кадра находится перемещение, с 25 по 44 - прыжок. Нужно сделать так, чтобы когда единоразово нажималась кнопка прыжка воспроизводилась соответствующая анимация. Все что смог придумать: либо привязывать анимацию к переменной нажатия кнопки прыжка, но тогда если отпустить эту кнопку воспроизведение анимации прекратиться, либо привязывать анимацию к моменту нахождения персонажа в воздухе, но и так воспроизведение не работает правильно(персонаж просто зависает в воздухе на первом кадре анимации, а когда приземляется воспроизводиться вся анимация персонажа начиная с текущего кадра до тех пока как-то не сдвинуть персонажа, на гифке запечатлен этот процесс). Думаю возможно каким-то образом проконтролировать воспроизведение анимации до конца и только затем воспроизводить следующую, но я не знаю как это сделать. Может кто-то уже сталкивался с подобными проблемами? не могли бы вы мне помочь?
Код ниже Код AS3:
|
честно говоря по мне функция организована чрез одно место.
Почему бы просто не написать условия анимации хождения пример на вскидку как способ реализации Код AS3:
Это вариант организации, какой бы стал делать я, может в итоге я бы сделал иначе, но попробуйте начатьс этого Добавлено через 5 минут стоит так же разделить вашу функцию на отдельные части, одни реагируют на нажатия клавиш, другие воспроизводит соответствующую анимацию |
изменил код
Код AS3:
а еще мне кажется не совсем правильно что значение переменной прыжка зависит от анимации, хоть и частично |
введите к примеру ещё одну булевскую переменную, надеюсь идея будет понятно
Код AS3:
Цитата:
|
вот тебе пример который лично у меня без глюков работает, со своей игры взял
Код AS3:
|
Цитата:
— имея на руках "карту" анимаций в виде таблицы с номером кадра начала очередной анимации и номером кадра окончания этой анимации, самостоятельно отслеживать номер кадра на событии ENTER_FRAME или подобном, и делать вывод об окончании анимации на основании этой таблицы. Этот подход условно называется "pull", мы сами "вытягиваем" из таймлайна то, чем он сейчас занимается. — в исходный таймлайн в начало анимации вставлять метки (label) с названиями этих видов анимаций, а в конце каждой анимации сделать вызов рассылки события окончания анимации. Этот подход тянет на "push", сама анимация сообщает, что она закончилась. Вызов анимации осуществляется переходом на метку gotoAndPlay('run_animation'); Первый подход довольно прост. Не нужно никаких меток и вообще никакого кода в файле анимации. Сложен в поддержании актуальности, ведь для этого нужна внешняя таблица. Хорошо, если эта таблица будет в самой анимации. На выручку приходят метки (labels). Второй подход вынудит использовать простейший код в последних кадрах анимации, что-то типа Код AS3:
|
| Часовой пояс GMT +4, время: 01:50. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.