Есть ли способ пропустить рамки рисования? - PullRequest
0 голосов
/ 08 февраля 2011


Я создаю флеш-игру, в которой используются временные интервалы с setInterval, а иногда выполняются сложные вычисления.Проблема заключается в том, что на более медленных компьютерах эти вычисления не успевают за частотой кадров, и фильм замедляется, НО таймеры не затрагиваются, что делает их асинхронными для фильма.Оглядываясь назад, было плохой идеей использовать таймеры, но я не могу изменить это сейчас.Итак ...
есть ли способ пропустить рамки рисования?Было бы хорошо, если бы игра имела более медленную частоту кадров в некоторых областях, но не отставала от таймеров.Или у тебя есть другие идеи как решить мою проблему?Я использую AS2 кстати.

Ответы [ 2 ]

0 голосов
/ 08 февраля 2011

Как насчет разделения ваших обновлений на две области: update () , где вы будете обновлять только те значения, которые вы будете использовать позже для рендеринга, и draw () / render (), где вы быу вас есть весь связанный с графикой код?

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

например

onEnterFrame = function(){
   update();
   if(_currentframe % frameSkip == 0) draw();
}

HTH

0 голосов
/ 08 февраля 2011

Решение состоит в том, чтобы или использовать меры на основе времени, или меры на основе кадров, а не смешивать и сочетать их.

Предпочтительным решением будет использование getTime() во всех событиях вашего кадра, чтобы определить, сколько времени прошло с предыдущего кадра, и, следовательно, сколько вам нужно сделать в этом событии.

...