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 AS3:enterframe/s中的循环_Actionscript 3_Loops_Enterframeevent - Fatal编程技术网

Actionscript 3 AS3:enterframe/s中的循环

Actionscript 3 AS3:enterframe/s中的循环,actionscript-3,loops,enterframeevent,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);

我有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++;
    }
}
var myObjArray:Array=newarray();//包含6个movieclip对象

对于(var i=1;i每个函数调用都有一个性能损失-这就是为什么人们在代码的关键部分谈论“内联”函数(内联函数内容而不是进行函数调用)

因此,最好的情况是只添加1个侦听器,并在该侦听器循环中覆盖所有6个对象。另一个技巧-如果反向迭代循环,则只调用数组上的.length()函数一次,而如果从0-length进行迭代,则for循环每次都必须调用length函数以确定是否满足条件

function enterFrame(e:Event):void
{
  for (var i:int=myObjArray.length-1; i>=0; i--) {
    myObjArray[i].x++;
  }
}
当然还有其他优化(有人说——我比我快——但我不确定ActionScript是否如此)


当然,对于6个对象来说,这并不是什么大问题,但如果你将其放大,你肯定会想要使用一个侦听器。

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

因此,最好的情况是只添加1个侦听器,并在该侦听器循环中覆盖所有6个对象。另一个技巧-如果反向迭代循环,则只调用数组上的.length()函数一次,而如果从0-length进行迭代,则for循环每次都必须调用length函数以确定是否满足条件

function enterFrame(e:Event):void
{
  for (var i:int=myObjArray.length-1; i>=0; i--) {
    myObjArray[i].x++;
  }
}
当然还有其他优化(有人说——我比我快——但我不确定ActionScript是否如此)


当然,对于6个对象来说,这并不是什么大问题,但如果你将其放大,你肯定会想要使用一个侦听器。

最好使用一个enterframe侦听器来更新所有对象。最好使用一个enterframe侦听器来更新所有对象。你还可以节省长度,并且不会有奇怪的向后循环;)@杰夫·沃德,Gr8回答。你说6个对象不是什么大问题,对Android设备也是一样。奇怪的反向循环还可以让你动态修改它们——我已经习惯了。)@Muhammad-移动设备上的资源总是比较紧张-最好使用书中的每一个优化技巧(对象池、内联函数、单事件处理程序-尤其是触摸事件)。您还可以节省长度,并且不会出现奇怪的反向循环;)@杰夫·沃德,Gr8回答。你说6个对象不是什么大问题,对Android设备也是一样。奇怪的反向循环还可以让你动态修改它们——我已经习惯了。)@穆罕默德-移动设备上的资源总是比较紧张-最好使用书中的每一个优化技巧(对象池、内联函数、单事件处理程序-尤其是触摸事件)。