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

当球与砖发生碰撞时,只移除最后一个砖。但如果球与砖发生碰撞,我想单独移除所有砖。

4

2 回答 2

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);
        }
    }
}
于 2013-04-24T06:31:24.803 回答
0

这里brick只指单个对象。将所有积木添加到数组中,然后在销毁函数中循环它们。

于 2013-04-24T06:27:49.700 回答