我首先要说的是我对编程有点新意,如果这是一个愚蠢的问题我会道歉。
我在我的应用程序中运行一个计时器,每隔一段时间,创建一个名为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对象将被删除,并且分数将上升一点。
谢谢!
答案 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--;
}
}
这是一种快速而肮脏的解决方案,但非常有效且常用。