[英]Collision is not working properly as3
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);
}
}
當球與磚碰撞時,只有最后一塊磚被移除。但是如果球與磚碰撞,我想分別拆除所有磚。
目前, 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);
}
}
}
這里brick
僅指單個對象。 將所有磚塊添加到數組中,然后在destroy函數中循環遍歷它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.