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

現在、brickfor ループで作成された最後のインスタンスを参照しています。これらのオブジェクトを配列に格納し、その配列をループして、その配列内の個々のブリック間の衝突をチェックする必要があります。

次のようになります。

// 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 に答える