试图限制我的Flash游戏的帧速率

我有一个我在2008年回归的Flash游戏。这些天它运行得非常快。实际上太快了。我在FlashDevelop中设置为60fps,但我认为这只是限制绘制调用的数量。我认为我的逻辑在这些日子里每秒执行60次。我有一段时间没有做过ActionScript,但我注意到我正在使用一个执行逻辑循环的enterFrameHandler。它似乎没有设置约束。它就像我所说的那样被激怒了。有什么方法可以限制在30或60fps吗?我非常感谢任何帮助或想法。如果逻辑运行得太快,我的游戏就会毁了:( UPDATE 随着一些ActionScript知识回归我,我只想到了一些东西。 enterFrameHandler是否受项目属性下Flash或FlashDevelop中fps设置的限制?任何人都可以证实吗?这意味着我的绘制调用和逻辑调用是1:1对吗?     
已邀请:
实际上,只有在渲染帧时才会调用enterFrame处理程序(在您的情况下为60Hz)。 如果您可以通过测量时间来限制执行某些操作的次数。像这样的东西:
// A property to store the last time the code was executed
protected var lastTimeCalled:int;

// Inside your enterFrame handler
protected function onEnterFrameHandler(e:Event): void {
    var ti:int = getTimer(); // Get current time
    var desiredFPS:Number = 60; // Actual framerate you want
    var frameInterval:Number = 1000 / desiredFPS; // Desired ms per frame

    if (isNaN(lastTimeCalled) || ti >= lastTimeCalled + frameInterval) {
        // Execute code here
        ...

        // Increase time (by chunks of fixed size for framerate self-adjustment)
        lastTimeCalled = isNaN(lastTimeCalled) ? ti : lastTimeCalled + frameInterval;
    }
}
但请注意,如果您的SWF的帧速率设置为60,那么尝试将desiredFPS设置为60将无法执行任何操作;它可能只是导致一些帧被丢弃。这可能是测试你的enterFrame处理程序是否在其他地方被调用的好方法。     

要回复问题请先登录注册