2013-05-01 51 views
0

我有一个函数可以检测物体何时碰撞,但是如何删除其中的一个?颈背在碰撞中删除身体

private function fruitToFloorCollision(collision:InteractionCallback):void 
     { 
      // TODO Auto Generated method stub 

      trace('fruit hits floor'); 

     } 

当我描绘出碰撞

Cb:BEGIN:(dynamic)#11/(static)#1 : [CollisionArbiter(Polygon#2|Circle#12)[SD]<-ACCEPT] : listener: InteractionListener{BEGIN#COLLISION::@{[CbType#5] excluding []}:@{[CbType#6] excluding []}} precedence=0 

回答

0
my answer..... 

,如果一个人有一个更好的/替代想听听它...

private function fruitToFloorCollision(collision:InteractionCallback):void 
     { 


      var ball:Body = collision.int1 as Body; 
      removeChild(ball.userData.graphic); 
      space.bodies.remove(ball); 
     } 
1

的首选用成语从仿真中删除身体似乎是:

ball.space = null; 

虽然它在内部调用space.bodies.remove(),但它也会执行一些额外的检查。

0

据我所知,考虑到你有2个物体水果和地板,interactionListener按这个顺序添加。

private function fruitToFloorCollision(collision:InteractionCallback):void 
    { 

     // CBTypes are added to Shapes not Bodies. So collision.int1 is a shape. 

     var fruit:Body = collision.int1.castShape.body as Body; 
     removeChild(fruit.userData.graphic); 
     space.bodies.remove(fruit); 
    }