AS3:在enterframe / s中循环

时间:2012-11-16 14:43:00

标签: actionscript-3 loops enterframeevent

我有6个物体必须随机连续移动。单独为每个对象输入框架或使用循环寻址所有对象的1个输入框架是否有效。

var myObjArray:Array = new Array(); // Contains 6 movieclip objects

for(var i=1; i<=6; i++)
{
    var Square:MoveObject = new MoveObject();
    Square.addEventListener(Event.ENTER_FRAME, Square.go);
    myObjArray[i] = Square;
}

public Class MoveObject extends Movieclip{
    public function go(e:Event):void
    {
        this.x++;
    }
}

或者我们在一个EnterFrame函数中循环对象?

1 个答案:

答案 0 :(得分:4)

每个函数调用都有性能损失 - 这就是为什么人们在代码的关键部分谈论“内联”函数(内联函数内容而不是函数调用)。

最好的情况是,只添加一个侦听器,并在该侦听器循环中覆盖所有6个对象。另一个提示 - 如果你反向迭代循环,你只需要调用数组上的.length()函数一次,而如果你从0长度迭代,for循环必须每次调用长度函数来确定条件是否为满足。

function enterFrame(e:Event):void
{
  for (var i:int=myObjArray.length-1; i>=0; i--) {
    myObjArray[i].x++;
  }
}

肯定有其他优化(有人说--i比i更快,但我不确定ActionScript是否正确)。

当然,在6个对象中,它并不是一个大问题,但如果你扩展它,你肯定会想要使用一个监听器。