Могу ли я предотвратить накопление входных событий Flash при замедлении частоты кадров?
Моя Flash-игра нацелена на 24 кадра в секунду, но на медленных машинах она замедляется до 10. Это нормально, за исключением того, что Flash решает ограничить очередь входящих MouseEvent и KeyboardEvents, и они складываются и события отстают. Далеко позади Это так плохо, что при 10 кадрах в секунду, если я спамлю Мышь и Клавиатуру в течение нескольких секунд, ничего особенного не происходит, а затем, после того, как я остановлюсь, игра будет играть сама в течение следующих 5 секунд, когда накапливаются События. знать.
Кто-нибудь знает способ обойти это? Мне нужно сказать Флэшу: "Я знаю, ты думаешь, что мы отстаем, но регулирование входных событий не поможет. Дай их мне, как только получишь, пожалуйста".
2 ответа
Вам, вероятно, повезет больше, если вы работаете над увеличением частоты кадров, а не пытаетесь обойти побочный эффект проблемы низкой частоты кадров. Вы использовали профилировщик, чтобы определить, почему частота кадров такая низкая? Можете ли вы использовать аннулирование, чтобы улучшить его? Есть ли узкие места, которые можно оптимизировать?
Я не думаю, что вспышка душит входные события. Я думаю, что более вероятно, что ваше приложение действительно не сможет обработать их достаточно быстро. Я думаю, что единственный способ помешать им "складываться" таким образом - это полностью отказаться от событий. Таким образом, вам нужно что-то в вашем коде, как:
function onKeyPress() {
if(inputIsTooFarBehind())
return; // skip this keypress
// process keypress as normal
}
Но есть недостаток... теперь пользователи будут отбрасывать некоторые из своих команд и будут просто нажимать больше и больше, чтобы попытаться заставить их работать команды.
Возможно, вам следует поработать над дизайном игры таким образом, чтобы не требовалось слишком много нажатий клавиш / мыши? Или согласитесь с предложением Сэма оптимизировать саму игру, чтобы она не замедлялась.