2

我一直试图让我的玩家实体旋转到鼠标,但是我无法触发 MouseMove 事件。

Crafty.e("2D, Mouse, Canvas, Color"
   .attr({ w:1000, h:1000, x:0, y:0 })
   .bind('MouseMove', function(e)
   {
         console.log("Mouse Pos:"+ e.x +","+e.y);
        //get hero
         var pos1 = {
           x: e.x,
           y: e.y
         }
         var pos2 = {
           x: player.x,
           y: player.y
         }
         player.rotation = 0;
         player.rotation = -Engine.degree(pos1, pos2);


     })

当我用 click 或 mousedown 或任何其他鼠标事件替换 MouseMove 时,它​​会在该事件发生时旋转到鼠标。但是它从不调用 mousemove 函数。我究竟做错了什么?

4

1 回答 1

1

看看CraftyMouseFace ,一个由社区制作的 Crafty 组件:

该组件执行以下操作:

  • 它找到给定 Sprite 和鼠标位置之间的角度,并触发一个 Crafty 事件,该事件保存有关当前鼠标位置和以弧度和度数计算的角度的信息。
  • 确定精灵面向的方向。
  • 当在游戏屏幕上的任意位置按下或释放鼠标按钮时触发狡猾的事件。

第一个功能听起来像您需要的。

让我们将MouseMoved事件及其事件数据放在下面的代码片段中进行测试。
移动鼠标指针并注意绿色矩形如何旋转以面对指针。

Crafty.init();

Crafty.e("2D, DOM, Color, MouseFace")
    .attr({x: 75, y: 75, w: 60, h: 60})
    .origin("center")
    .color('green')
    .bind("MouseMoved", function(data) {
        this.rotation = data.rad * 180 / Math.PI;
    });
<script src="https://github.com/craftyjs/Crafty/releases/download/0.7.1/crafty-min.js"></script>
<script src="https://cdn.rawgit.com/petarov/CraftyMouseFace/master/src/craftyMFace.js"></script>

于 2016-04-16T23:12:44.880 回答