PDA

Просмотр полной версии : анимация


anmelegov
16.03.2012, 23:17
это даже и не анимация по сути, в общем есть у меня рагдолл который сидит на байке и мне надо его заставить прыгать... в общем у меня есть ключевые точки (как в анимации) и в этих точках я должен изменять параметры джоинтов которыми рагдол приделан к байку... подскажите пожалуйста как лучше организовать хендлер... слушать событие enter frame и считать итерации? или есть какой-то другой, более правильный, способ?

Deimos747
17.03.2012, 00:36
Если я вас правильно понял, что вам нужно перехожить покадрово, то чтобы, даже при падении fps всё было более-менее плавно я делаю так:

private var _badTime: Number = 0.0;
private var _timeLastUpdate: Number;
private var _fps: int; //можете указывать разные для разных анимаций от fps игры это не зависит

private function onEnterFrame(event: Event): void
{
var timeNow: Number = new Date().getTime();

_badTime += timeNow - _timeLastUpdate;
_timeLastUpdate = timeNow;

while (_badTime > Number(1000 / _fps)) {
_badTime -= Number(1000 / _fps);
tick();
}
}

private function tick(): void
{
//здесь выполняются переходы и прочие нужные операции
}

anmelegov
17.03.2012, 00:45
что это такое вообще? столько переменных.. ниче не понятно... я делаю всё намного проще:

private var iterator:uint = 0;

private function handler(e:event) {
switch(iterator++) {
case 1:
// do some actions
break;
case 5:
// do some actions
break;
case 30:
removeEventListener(event.EnterFrame, handler)
iterator = 0;
}
}

но я что-то не люблю конструкцию switch case =)

Добавлено через 1 минуту
какой кнопкой тут табуляцию делать в сообщении?

Добавлено через 17 минут
у меня не анимация, я управляю рагдоллом.. он приделан к байку 3-мя джоинтами которые имитируют мышцы (представьте амортизатор с пружиной) и я должен в ключевых точках задавать этим джоинтам длину и параметры "амортизатора" и "пружины" т.е., грубо говоря, скорость с которой он будет пытаться достичь заданной длины