2015-05-26 14 views
1

Flash中的setInterval函数在内置Flash播放器中正常工作(测试阶段),但是当我在独立播放器上使用相同(已发布)swf时,它比这慢了近10倍。为了确认我创建了一个没有任何图形的简单计数器并且注意到了这个问题PS:我已经检查了各种播放器版本,甚至在互联网浏览器上,甚至在Windows 7上的VMWare上都检查过。我尝试了所有其他选项,如cpu和gpu加速,但没有任何改进。setInterval在独立Flash播放器中速度很慢

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

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

好消息用它。 – BotMaster

+0

已弃用?你怎么想象的? **绝对不是真的**! –

+0

'setInterval'与** ZERO **?!?你期望会发生什么?继续更新这个FOREVER?! :D –

回答

0

这里真正的答案是,你正在使用setInterval0值。这意味着您想尽可能多地在框架中执行尽可能多的功能f。但由于AS3的本质,帧切换延迟了,因此可以执行帧内代码(帧速率下降)。但你永远不会完成执行 - 你的setInterval会一直持续下去,并正在破坏一切。这就像写作while (true)循环..

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

+0

0间隔是有意为性能测量,它有多快。问题与独立玩家有关。我无法理解内部和外部闪存播放器之间的性能差异 – user171461

+0

速度有多快?你期望会发生什么 - 无论你使用哪一个播放器,它最终都会冻结。 –

+0

我甚至不知道如何将它与“内置闪存播放器”进行比较:) –

0

我建议你使用闪光灯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++; 
} 
你无论如何的setInterval已被弃用,多年来一直是这样做不