将实例名称分配给数组对象:ActionScript 3.0

时间:2013-11-06 21:12:16

标签: arrays actionscript-3 loops flash-cs5

我首先要说的是我对编程有点新意,如果这是一个愚蠢的问题我会道歉。

我在我的应用程序中运行一个计时器,每隔一段时间,创建一个名为blueBall的MovieClip的新实例。这是我的代码:

var randomX:Number = Math.random() * 350;
var newBlue:mc_BlueBall = new mc_BlueBall  ;
newBlue.x = randomX;
newBlue.y = -20;

for(var i:Number = 0;i < blueArray.length; i++)
{
newBlue.name = "newBlue" + i;
}

blueArray.push(newBlue);
addChild(newBlue);

}
var randomX:Number = Math.random() * 350;

var newBlue:mc_BlueBall = new mc_BlueBall  ;
newBlue.x = randomX;
newBlue.y = -20;

for(var i:Number = 0;i < blueArray.length; i++)
{
newBlue.name = "newBlue" + i;
}

blueArray.push(newBlue);
addChild(newBlue);

}

我的问题是:如何使数组中每个新创建的对象拥有自己的hitTestObject事件?我想这样做,如果用户的图标触及其中一个newBlue对象,那个newBlue对象将被删除,并且分数将上升一点。

谢谢!

1 个答案:

答案 0 :(得分:1)

这是我第一次在这里回答问题,但我希望我能提供帮助!假设你有一个主游戏循环的计时器,你应该每帧尝试一次这样的事情:

//For each blue ball in the array
for(var i:int = 0; i < blueArray.length; i++) {
    //If it touches the player
    if(blueArray[i].hitTestObject(thePlayerMC)) {
        //Increment the score
        score++;
        //Remove from stage and array
        removeChild(blueArray[i]);
        blueArray.splice(i, 1); //<-At index i, remove 1 element
        //Decrement i since we just pulled it out of the array and don't want to skip the next array item
        i--;
    }
}

这是一种快速而肮脏的解决方案,但非常有效且常用。