var i:Number;
for (i=0;i<6;i++)
{
var brick:Sprite=new Sprite();
brick.graphics.beginFill(0x02589E);
brick.graphics.drawRect(0,0,70,7);
brick.graphics.endFill();
brick.y=10;
brick.x=12+(80*i);
addChild(brick);
}
addEventListener(Event.ENTER_FRAME,destroy);
var ball:Sprite=new Sprite();
ball.graphics.beginFill(0xff0000);
ball.graphics.drawCircle(0,0,7);
ball.graphics.endFill();
ball.x=200;
ball.y=230;
addChild(ball);
.......球移动的一些代码.......
function destroy(e:Event):void
{
if(ball.hitTestObject(brick)){
removeChild(brick);
}
}
当球与砖碰撞时,只有最后一块砖被移除。但是如果球与砖碰撞,我想分别拆除所有砖。
答案 0 :(得分:2)
目前,brick
指的是在for循环中创建的最后一个实例。您需要做的是将这些对象存储在一个数组中,遍历该数组,并检查该数组中每个砖块之间的碰撞。
它可能看起来像这样:
// Define the array.
var bricks:Array = [];
// Create bricks.
for(var i:int = 0; i < 6; i++)
{
var brick:Sprite = new Sprite();
brick.y = 10;
brick.x = 12 + (80 * i);
brick.graphics.beginFill(0x02589E);
brick.graphics.drawRect(0, 0, 70, 7);
brick.graphics.endFill();
addChild(brick);
bricks.push(brick);
}
然后你的碰撞检查代码:
function destroy(e:Event):void
{
for each(var brick:Sprite in bricks)
{
if(ball.hitTestObject(brick))
{
removeChild(brick);
}
}
}
答案 1 :(得分:0)
此处brick
仅指单个对象。将所有砖块添加到数组中,然后在destroy函数中循环遍历它们。