|
|
|||||
[+4 07.04.12]
[+1 20.01.12] Регистрация: Nov 2009
Адрес: Украина, Славутич
Сообщений: 263
|
скорость проигрывание анимации
в общем у меня есть анимация персонажа на таймере... я хочу чтобы скорость проигрывания анимации зависела от скорости бега. Первое что пришло в голову - это задавать таймеру задержку, в зависимости от длины вектора скорости. Но через 3-5 секунд у таймера перестает срабатывать таймерИвент... как сделать по другому или так чтобы таймер не "ломался"?
|
|
|||||
Проще слушать событие Event.ENTER_FRAME и считатать кадры. Если скорость бега такая-то, значит мы должны переключать кадр анимации раз в столько-то событий ENTER_FRAME.
__________________
...вселенская грусть |
|
|||||
[+4 07.04.12]
[+1 20.01.12] Регистрация: Nov 2009
Адрес: Украина, Славутич
Сообщений: 263
|
|
|
|||||
[+4 07.04.12]
[+1 20.01.12] Регистрация: Nov 2009
Адрес: Украина, Славутич
Сообщений: 263
|
velocity.length - это длина вектора скорости... человечек бежит с определенной скоростью, длина вектора скорости = это расстояние которое он пробежит за момент времени
|
|
|||||
Посмотри любой твинер, как там сделано.
Поидее таки лучше делать по ентерфрейму, а таймером мерять задержку после предыдущего кадра, и расчитывать исходя из этой задержки на какое расстояние он сместится в этом кадре. Т.е. твой вариант с точностью до наоборот. Тупо по таймеру не получится так как флешка все-равно работает по кадрам, и если таймер срабатывает между кадрами или же интервал таймера меньше одного-двух кадров - то будут косяки. Таймером можно пользоваться если задержка в районе 100-1000 мс(10-1 тик в секунду), у меня обычно нету таймеров меньше 100 мс, чаще всего вообще только секундные.
__________________
Кто к нам с чем для чего - тот у нас того от того. |
|
|||||
[+4 07.04.12]
[+1 20.01.12] Регистрация: Nov 2009
Адрес: Украина, Славутич
Сообщений: 263
|
с таймером классно работает до тех пор пока я не начинаю менять delay каждую секунду, потом что-то нарушается
|
|
|||||
Дело в том что события таймера всё равно привязаны к общей частоте кадров. Вы не сможете перерисовать человечка посередине кадра. Поэтому лучшим решением будет сидеть на EnterFrame и мерять время по getTimer(). Время мерять надо потому что на разных компах и разной нагрузке некоторые кадры могут рендериться дольше чем обычно. И как только вы видите что подошло время нарисовать следующий кадр вы его переключаете.
__________________
:) |
Часовой пояс GMT +4, время: 12:34. |
|
« Предыдущая тема | Следующая тема » |
|
|