2011-02-07 3 views
0


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

ответ

0

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

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

+0

Но это не помешает вспышка рисовать кадры в любом случае. Я думал о добавлении времени, в течение которого два последовательных кадра нуждались больше в этом интервале, но, к сожалению, нет функции 'updateInterval'. –

+0

@Alex: Речь идет не о изменении частоты кадров. Речь идет о * решении вашей реальной проблемы *. –

+0

О, хорошо, я могу попробовать. –

0

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

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

например.

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

НТН

Смежные вопросы