当帧速率减慢时,我可以阻止Flash的输入事件堆叠吗?

时间:2010-05-07 01:29:35

标签: flash actionscript-3 flashplayer-10

我的Flash游戏目标是24 fps,但在较慢的机器上减速到10。这很好,除了Flash决定限制传入的MouseEvent和KeyboardEvents的队列,它们堆叠起来,事件落后。落后的方式。这是非常糟糕的,在10 fps,如果我垃圾鼠标和键盘几秒钟没有太多发生,那么,在我停止后,游戏似乎在接下来的5秒内播放,因为事件涓涓细流。诡异,我知道。

有没有人知道解决这个问题的方法?我基本上需要对Flash说,“我知道你认为我们落后了,但是对输入事件进行限制无济于事。请你一接到就把它们交给我。”

2 个答案:

答案 0 :(得分:2)

你可能有更好的运气来提高你的帧率而不是试图解决低帧率问题的副作用。您是否使用了分析器来确定帧速率如此之慢的原因?你能利用失效来改善吗?是否存在可以优化的瓶颈?

答案 1 :(得分:0)

我认为flash不会限制输入事件。我认为您的应用程序更有可能无法足够快地处理它们。我认为阻止他们以这种方式“堆积”的唯一方法就是彻底抛弃事件。因此,您需要在代码中使用以下内容:

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

  // process keypress as normal
}

但是有一个缺点......用户现在会丢弃他们的一些命令,只需点击越来越多来尝试让他们的命令工作。

也许您应该以不需要过多按键/鼠标按键的方式设计游戏?或者按照Sam的建议来优化游戏本身,以防止它首先放慢速度。