1

我无法让它工作,似乎补间对象不会触发“移动”事件?

我在屏幕上补间一个对象,需要检查它是否与玩家发生碰撞(通过键盘事件上下飞行)。如果我为播放器附加“已移动”的检查,它会起作用,但是如果播放器静止不动怎么办:-)

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

不触发任何事件:

        // 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');
            });
4

2 回答 2

0

“已移动”是“Multiway”等组件使用的特殊事件。

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

许多人所做的只是使用“EnterFrame”每帧检查一次碰撞。如果您需要在碰撞后立即采取行动那么绑定到“移动”将提供这一点。

于 2014-03-08T19:40:35.600 回答
0

更新 :

我在plugin这里使用很少,collisions($div1, $div2)

所以,

 function interval() {

   timeout = setTimeout(function () {

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

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

 }

 interval()

工作演示

愿这有帮助...

于 2014-03-06T12:49:29.673 回答