Могу ли я предотвратить накопление входных событий Flash при замедлении частоты кадров? - PullRequest
0 голосов
/ 07 мая 2010

Моя Flash-игра нацелена на 24 кадра в секунду, но на более медленных машинах замедляется до 10. Это нормально, за исключением того, что Flash решает ограничить очередь входящих MouseEvent и KeyboardEvents, и они складываются и события отстают. Далеко позади Это так плохо, что при 10 кадрах в секунду, если я спамлю Мышь и Клавиатуру в течение нескольких секунд, ничего особенного не происходит, а затем, после того, как я остановлюсь, игра будет играть сама в течение следующих 5 секунд, когда накапливаются События. знаю.

Кто-нибудь знает способ обойти это? Мне нужно сказать Флэшу: «Я знаю, ты думаешь, что мы отстаем, но регулирование входных событий не поможет. Дай их мне, как только получишь, пожалуйста».

Ответы [ 2 ]

2 голосов
/ 07 мая 2010

Вам, вероятно, повезет больше, если вы работаете над увеличением частоты кадров, а не пытаетесь обойти побочный эффект проблемы низкой частоты кадров. Вы использовали профилировщик, чтобы определить, почему частота кадров такая низкая? Можете ли вы использовать аннулирование, чтобы улучшить его? Существуют ли узкие места, которые можно оптимизировать?

0 голосов
/ 11 мая 2010

Я не думаю, что вспышка душит входные события. Я думаю, что более вероятно, что ваше приложение действительно не сможет обработать их достаточно быстро. Я думаю, что единственный способ помешать им «складываться» таким образом - это полностью отказаться от событий. Таким образом, вам нужно что-то в вашем коде, как:

function onKeyPress() {
  if(inputIsTooFarBehind()) 
    return; // skip this keypress

  // process keypress as normal
}

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

Возможно, вам следует заняться дизайном игры таким образом, чтобы не нуждаться в таких чрезмерных нажатиях клавиш / мыши? Или согласитесь с предложением Сэма оптимизировать саму игру, чтобы она вообще не замедлялась.

...