ActionScript 3: измерение прошедшего времени между событиями enterFrame - PullRequest
3 голосов
/ 30 мая 2009

У меня есть событие EnterFrame, и я хочу знать точное время между вызовами, поэтому я смогу более плавно анимировать объекты, когда компьютер не может произвести желаемую частоту кадров.

Ответы [ 4 ]

10 голосов
/ 30 мая 2009

Чтобы быть немного более конкретным.

currentTime = getTimer();
diff = currentTime - prevTime;

prevTime = currentTime;//update for next go around

EDIT

getTimer требует, чтобы вы импортировали пакет: flash.utils.getTimer;

3 голосов
/ 30 мая 2009

используйте getTimer ();

1 голос
/ 31 мая 2009

, как говорили другие, лучший способ - getTimer ... но я хотел бы предложить еще кое-что: если вы хотите делать анимацию на основе времени, которая обновляется на основе фреймов, вы можете также попробовать некоторые из больших библиотек анимации ActionScript, такие как caurina Tweener ... они просто делают это из коробки и предоставляют другие замечательные функции ...

Greetz

back2dos

1 голос
/ 31 мая 2009

Вы должны использовать встроенную функцию Таймер для вызова метода каким-то * ENTER_FRAME независимым способом.

var timer:Timer = new Timer(500, 0);
timer.addEventListener(TimerEvent.TIMER, timerHandler);
timer.start();

private function timerHandler(event:TimerEvent):void
{
    // do something

    // *EDIT* Thanks @Luke spotting this out (check comments)
    event.updateAfterEvent();

}

*) Тем не менее, вы должны иметь в виду, что обработчик событий не будет запускаться между кадрами, поэтому в случае задержки вашего сценария (из-за какого-либо другого процесса) этот вызов также будет отложен. Чтобы быть точным, вызов метода будет аппроксимироваться в кадре, выполненном в то же время или сразу после установленного delay time.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...