AS3调用函数函数并避免播放器崩溃/挂起?

时间:2011-10-06 23:02:02

标签: actionscript-3

我正在对存储在数组中的一堆对象进行一系列计算。每个功能都是CPU要求很高但如果你只运行一个功能,它就可以正常运行。 这是一个shema:

var array:Array = new Array();

function a():void{
  //Do some stuff with array
b();
}

function b():void{
  //Do some stuff with array
c();
}

function c():void{
  //Do some stuff with array
d()...
}

回到AS2.0,我发现如果我在函数调用之间运行一个非常短的“Tween”(比如200毫秒),我可以让玩家不会崩溃/挂起

var t:Tween = new Tween(...
t.onMotionFinished = function(){
b();
}

我正在寻找一种更“传统”的方式:)

2 个答案:

答案 0 :(得分:1)

您可以使用Timer

var timer:Timer = new Timer(200,0);
timer.addEventListener(TimerEvent.TIMER,timerHandler);

...

protected function timerHandler(e:Event):void {
    b();
}

答案 1 :(得分:0)

你可以使用Timmer,或者你可以这样做:

var oldTime:Number = getTimer();
var thisTime:Number = 0;

var counter:int = 0;
var functions:Vector<Function> = new Vector<Function>();
functions.push(a,b,c);

addEventListener(Event.ENTER_FRAME, onLoop);

private function onLoop(e:Event):void
{
   var resultTime:Number = getTimer() - oldTime;
   if(resultTime > 200 )
   {
      functions[counter].call();
      ++counter;
      oldTime += resultTime;
      if(counter >= functions.length) 
      {
        counter = 0;
        removeEventListener(Event.ENTER_FRAME,onLoop);
      } 
   }
}

只需在执行需要启动时添加ENTER_FRAME侦听器。我没有详细检查代码,但我希望能为你工作......