setInterval在独立flash播放器中非常慢

时间:2015-05-26 15:21:49

标签: actionscript-3 flash flash-cc

使用内置flash播放器(测试阶段),Flash中的setInterval函数可以正常工作,但是当我在独立播放器上使用相同(已发布)的swf时,它几乎要慢10倍。为了确认我创建了一个没有任何图形的简单计数器,并注意到了这个问题。

PS:我已经检查了各种播放器版本,甚至在互联网浏览器上,甚至在Windows 7上的VMWare上。我尝试了所有其他选项,如cpu和gpu加速但没有改进。

我的测试平台:只有一个框架和一个名为“te”的动态文本字段。以下是动作脚本

var lo=0;
function f():void{
    te.text=lo++;
}
setInterval(f,0);

2 个答案:

答案 0 :(得分:0)

这里真正的答案是您使用setInterval,其值为0。这意味着您希望尽可能多地调用帧中的函数f。但由于AS3的性质,帧切换被延迟,因此可以执行内部代码(帧速率下降)。但是你永远不会完成执行 - 你的setInterval永远都在继续,并且正在破坏一切。这就像写while (true)循环..

所以,只需开始正确使用它,你就不会有任何问题。

答案 1 :(得分:0)

我建议你使用flash Timer类来精确间隔时间, 与ENTER_FRAME或setInterval

相比,它的效率更高
var myTimer:Timer = new Timer(1); //ms
var time = 0;
myTimer.start()
myTimer.addEventListener(TimerEvent.TIMER,timerHandle);

function timerHandle(e:TimerEvent){
    txt_time.text = time.toString();
    time++;
}