2014-03-06 62 views
1

我无法让它工作,好像补间物体不会触发'Moved'事件?补间物体上的碰撞检测

我在屏幕上补间一个物体,并且需要检查它是否与玩家碰撞(通过键盘事件上下飞行)。它的工作原理,如果我追加对“感动”在检查的玩家,但如果玩家所以仍然屹立:-)

我需要检查时,补间对象移动,如果它击中玩家

不触发任何事件:

 // astroid 
     Crafty.e('astroid, 2D, DOM, Color, Tween, Collision') 
      .attr({ x: 600, y: 550, w: 50, h: 200 }) 
      .color('#8e44ad') 
      .tween({ x: -50 }, 4000) 
      .bind('Moved', function() { 

       console.log('moved'); 

       if (this.hit('player1')) { 
        console.log('player hit 1'); 
       } 
      }) 
      .onHit('player', function() { 
       console.log('player hit 2'); 
      }); 
+0

您是否能够提供您的http://jsfiddle.net/ –

+1

Ashish Mishra是的我是:-) http://jsfiddle.net/6RDYw/ – Jason94

回答

0

更新时间:

我使用小plugin这里,collisions($div1, $div2)

所以,

function interval() { 

    timeout = setTimeout(function() { 

     if (collisions($('.player1'), $('.astroid'))) { 
      alert('true'); 

     } 
     else{ 
      interval(); 
     } 
    }, 25); 

} 

interval() 

WORKING DEMO

可能这是有帮助的...

+0

看到我的小提琴,我更新了它... –

+1

非常有帮助阿希什!谢谢! – Jason94

+0

虽然这与Crafty的内置碰撞事物不兼容!如果从DOM切换到Canvas,我认为它也会失败。 – starwed

0

“感动” 是一个特殊的事件,像 “多路” 使用的组件。

更基本的事件就是“移动”,它由2D component直接实现 - 而是绑定到该事件。

许多人所做的只是使用“EnterFrame”每帧检查一次碰撞。如果您需要在碰撞后直接执行,绑定到“移动”将提供该功能。

+0

,请'craftyJs'添加'碰撞检测'的任何运行的例子,因为我搜索了很多,但没有发现......它! –