我想创建一个打砖块游戏。brick(movieClip)对象被保存在数组中,所以我想在两次碰撞后销毁砖块。我已经在一次碰撞后销毁砖块了,但是我想两次碰撞后将砖块销毁。当第一次检测到碰撞时,请更改砖块颜色,第二次销毁砖块,如何解决此问题,请帮帮我。 这里是积木创建功能。
private function createLabell():void
{
for(var i:Number=0;i<totalBricks;i++)
{
if(i==2)
{
newBrick=new Power();
}else
{
newBrick=new Brick();
}
bg_mc.addChild(newBrick);
newBrick.x=50*row+10;
newBrick.y=30 *col+40;
label1.push(newBrick)
row++;
if(row>8)
{
row=0;
col++;
//trace(col);
}
//trace(label1[i]);
}
}
这里是碰撞部分(一次碰撞)。
private function collisionDetectionn():void
{
for(var i:Number=0;i<label1.length;i++)
{
var bk:MovieClip = label1[i] as MovieClip;
if(bg_mc.ball.hitTestObject(bk))
{
ballYSpeed *=-1;
brickCount++;
scores+=5;
bk.parent.removeChild(bk);
label1.splice(i,1);
i--;
}
}
}
但是我想在两次碰撞后销毁砖头。谢谢。
答案 0 :(得分:0)
据我所见,砖是您的积木的基类吗?什么是力量?
无论如何,通过公共变量碰撞
增强砖public var collisions:int = 0;
现在有点棘手,因为在碰撞检测中您无法区分Power和Brick。因此,我们需要确保首先是砖头。然后,与其简单地在碰撞时移除砖块,不如将其 collisions 计数器增加1,最后将其移除(如果为2)。
var bk:MovieClip = label1[i] as MovieClip;
if(bg_mc.ball.hitTestObject(bk))
{
ballYSpeed *=-1;
brickCount++;
scores+=5;
if(bk is Brick)
{
Brick(bk).collisions++;
if(Brick(bk).collisions==2)
{
bk.parent.removeChild(bk);
label1.splice(i,1);
i--;
}
}
else
{
bk.parent.removeChild(bk);
label1.splice(i,1);
i--;
}
}