2013-04-24 4 views
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); 
       } 
      } 

볼이 벽돌과 충돌

, 마지막 벽돌 AS3 작동하지 않습니다 하지만 공이 벽돌과 충돌하면 모든 벽돌을 따로 제거하고 싶습니다.

답변

0

여기서 brick은 단일 개체를 나타냅니다. 모든 벽돌을 배열에 추가 한 다음 파괴 기능에서 반복합니다.

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); 
     } 
    } 
} 
관련 문제