1

我有一个在 Chrome 中运行的非常简单的 Crafty.js 脚本。

在我的组件文件中,我有这个组件:

Crafty.c('PlayerCharacter', {
init: function() {
var playerRef = this;
playerRef.bind("KeyDown", function(e) 
  {
      if (playerRef.isDown('LEFT_ARROW')) {
          playerRef.x=playerRef.x-16;
          myPlayer.sendMessage("LEFT");
      } else if (playerRef.isDown('RIGHT_ARROW')) {
          playerRef.x=playerRef.x+16;
          myPlayer.sendMessage("RIGHT");
      } else if (playerRef.isDown('UP_ARROW')) {
          playerRef.y=playerRef.y-16;
          myPlayer.sendMessage("UP");
      } else if (playerRef.isDown('DOWN_ARROW')) {
          playerRef.y=playerRef.y+16;
          myPlayer.sendMessage("DOWN");
      }
  });  
},
});

然后在我的游戏开始功能中,我有:

Crafty.e("2D, DOM, Color, Keyboard, Mouse, PlayerCharacter")
  .attr({x: 20*16, y: 20*16, w: 16, h: 16})
  .color('rgb(255,0,0)');

如前所述,玩家角色在 Chrome 中按预期显示和移动,但在 Firefox 中它只是最初显示并且不会移动。没有产生错误。

如果有人对如何调试这个有任何想法或想法(目前使用 Firebug,但成功有限)。

顺便说一句:以下替代代码也适用于 Chrome 而不是 Firefox

Crafty.c('Actor', {
  init: function() {
   this.requires('2D, Canvas, Grid');
  },
});

Crafty.c('PlayerCharacter', {
  init: function() {
   this.requires('Actor, Fourway, Color')
     .fourway(4)
     .color('rgb(20, 75, 40)');
  }
});
4

0 回答 0