0

我的 Flash 游戏以 24 fps 为目标,但在较慢的机器上减慢到 10。这很好,除了 Flash 决定限制传入的 MouseEvent 和 KeyboardEvents 的队列,它们堆积起来并且事件落后。远远落后。太糟糕了,以 10 fps 的速度,如果我在几秒钟内向鼠标和键盘发送垃圾邮件并不会发生太多事情,那么在我停止后,游戏似乎会在接下来的 5 秒钟内自动播放,因为事件会慢慢进入。幽灵,我知道。

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

4

2 回答 2

2

努力提高帧率而不是试图解决低帧率问题的副作用可能会更好。您是否使用分析器来确定帧速率为何如此缓慢?你可以利用失效来改进它吗?有没有可以优化的瓶颈?

于 2010-05-07T02:22:37.403 回答
0

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

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

  // process keypress as normal
}

但是有一个缺点......用户现在将丢弃他们的一些命令,并且将简单地单击越来越多以尝试让他们的命令工作。

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

于 2010-05-11T01:54:45.620 回答