【发布时间】:2012-12-03 03:45:50
【问题描述】:
我已经设置了代码,因此我的库中有一个影片剪辑,其中一个名为“block”的类被多次复制并添加到这样的数组中:
function makeblock(e:Event){
newblock=new block;
newblock.x=10;
newblock.y=10;
addChild(newblock);
myarray[counter] = newblock; //adds a newblock object into array
counter += 1;
}
然后我有一个循环,目前处理我的问题的原始方式:
stage.addEventListener(Event.ENTER_FRAME, gameloop);
function gameloop(evt:Event):void {
if (moveright==true){
myarray[0].x += 5;
myarray[1].x += 5;
myarray[2].x += 5
-(and so on)-
我的问题是如何更改每帧复制到数组中的新对象的 x,y 值以及之前添加的对象。当然比自己写出更优雅的方式... array[0].x += 5, array[1], array[2], array[3] 等等。
理想情况下,我希望一个数组最多包含 500 个或更多数组对象,所以显然我不想单独写出来哈哈,我还需要它与性能保持一致,因此使用 for 循环或循环遍历整个数组并移动每个 x += 5 的东西不会起作用吗?无论如何,如果有人有任何想法,那就太好了!
【问题讨论】:
-
您是否尝试过使用循环?是不是进展得太慢了?项目是如何被绘制到屏幕上的?也在循环中?还是 AS3 会为您绘制充满对象的数组?
-
我还没有完全放入一个 for 循环来测试它,但我在想如果我有多个包含数百个对象的数组要移动它可能会对每个数组的性能造成很大影响循环中的数组。我想知道是否有一种我没有想到的方法,所以我可以为每个创建的对象动态创建一个变量或其他东西。然后让每个人在创建时每帧更新其 x 位置。
-
啊,项目一被创建就被绘制到屏幕上,所以我会在屏幕外创建它们,然后基本上将它们移动到视图中。
标签: arrays actionscript-3 loops duplicates