0

我首先要说我对编程有点陌生,如果这是一个愚蠢的问题,我深表歉意。

我在我的应用程序中运行了一个计时器,它在每个时间间隔创建一个名为 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 对象将被删除,并且分数会上升一个点。

谢谢!

4

1 回答 1

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--;
    }
}

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

于 2013-11-06T22:05:30.937 回答