Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 Actionscript 3不稳定的帧速率_Actionscript 3_Optimization_Lag_Frame Rate - Fatal编程技术网

Actionscript 3 Actionscript 3不稳定的帧速率

Actionscript 3 Actionscript 3不稳定的帧速率,actionscript-3,optimization,lag,frame-rate,Actionscript 3,Optimization,Lag,Frame Rate,我正试图在ActionScript3中开发一个游戏,但是突然而频繁的延迟会让游戏非常不舒服 目前,整个游戏只是移动一个正方形,因此没有什么繁重的计算会导致这种情况 我已经尝试使用定时器和输入帧事件。他们都很不稳定。我也尝试过不同的帧率 我能做些什么来防止这种情况 //var timer = new Timer; //timer.addEventListener(TimerEvent.TIMER, time); //timer.start(); stage.addEventListener(Eve

我正试图在ActionScript3中开发一个游戏,但是突然而频繁的延迟会让游戏非常不舒服

目前,整个游戏只是移动一个正方形,因此没有什么繁重的计算会导致这种情况

我已经尝试使用定时器和输入帧事件。他们都很不稳定。我也尝试过不同的帧率

我能做些什么来防止这种情况

//var timer = new Timer;
//timer.addEventListener(TimerEvent.TIMER, time);
//timer.start();
stage.addEventListener(Event.ENTER_FRAME, time);

function time(evt:Event):void
{
        now=(getTimer());
        dt = now-then;
        trace(dt);
        then = now;
}
给出以下输出(尝试的FPS:100):

3 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11 9 11 11 9 11 11 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10297 5 14 14 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 1010 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 9 11 11 10 10 10 9 10 10 10 11 10 10 10 9 10 10 10 10 11 11 10 10 10 10 10 11 9 10 10 10 10 10 10 11 11 11 11 11 11 11 10 10 10 10 10 10 10 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 9 10 10 10 10 10 10 9 10 10 10 10 10 10 10 10 10 10 10 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 1011 9 10 10 10 10 10 10 10 10 11 9 10 10 10 10 10 10 10 10 11 9 10 11 11 11 9 10 10 10 11 11 11 11 11 10 10 11 10 11 11 10 9 11 11 15 11351542 64 3715 6 5 10 11 9 10 11 11 9 10 10 10 10 10 10 10 10 10 10 10 10 102863 65 638 15565713 6 13 12 6 1136 69 20 2512 6 533 36 57 20 34 2112 9 13 6 5 9 9 7 10 10 10 10 10

我上传了一个swf来演示问题(这里是60 FPS)。(用键移动)。正如您将体验到的,正方形在大部分时间内移动平稳,但频繁的延迟会让它感到不舒服

编辑:与大多数代码位于不同的AS文件中相比,当所有代码都在FLA时间线中时,应用程序运行起来似乎要平稳得多。有什么可能的原因吗?

坚持30帧/秒

不确定以下内容是否有助于提高性能。但是试着像这样做:

var now = 0;
var then = 0;
var dt = 0;
stage.addEventListener(
    Event.ENTER_FRAME, 
    function(e:Event):void
    {
        now = getTimer();
        dt = now-then;
        //trace(dt);
        then = now;
    }
);

首先,100fps是一个非常高的帧速率。 正如您所见,它永远无法达到所需的fps

您应该选择实际达到的较低帧速率,而不是过高的帧速率。 很多游戏使用60,但30也很常见

正如您自己所经历的:帧速率不稳定。 一旦你做了任何事情,就必须进行计算,这可能需要也可能不需要超过一帧的时间来计算导致滞后的原因

解决方法是你在问题中所做的:根据帧之间的时间差进行游戏。 如果从最后一帧开始经过3毫秒,计算3毫秒后游戏应该处于什么状态。如果经过了不同的时间,比如5ms,则使用该时间,以此类推


这允许游戏以一致的速度运行,即使显示更新滞后。

使用Adobe Scout解决性能问题。这是一个免费的一站式商店为这种考验。它精确地映射出了哪些组件,以及它们在每个帧中占用计算资源的时间。

如果没有看到代码,很难说……导致这种情况的不是代码……但我可以告诉您。
getTimer()
在做什么?另外,如果导出一个发布swf,您是否注意到同样的行为?show
getTimer()
函数。@Fergoso:它在60或30 FPS时也不稳定。我发现非常奇怪的是,即使没有计算,帧率也不稳定。当我真的做某事的时候会有多晚?关于移动的正方形,我试着用dt乘以它的速度。这也许会使它更平滑一些,但我仍然不认为它的运动是平滑的。在30帧时,它看起来一点也不平滑。也许不是因为滞后峰值,而是因为缺乏FPS。