我有两个关于Crafty的问题(我也在他们的google group社区中问过,但似乎很少有人关注这个问题)。

我已经按照本教程http://buildnewgames.com/introduction-to-crafty/进行了研究,还查看了Crafty网站上一堆积木(http://craftyjs.com/demos/isometric/)的“等距”演示。我一直在尝试通过结合我在两者中学到的东西。

(Q1)当我使用Fourway组件(在本教程中经常使用)时,如果例如按住左箭头键并按住CTRL-TAB并按住当前键,然后返回(不必再保持左键) ,那么我的角色似乎被困在向“左”方向移动。其他3个方向也会发生这种情况。这是一个已知问题吗?无论如何,有没有修理就可以修复它?

它发生在firefox 29和chrome 34上。我的代码几乎是教程末尾提供的最终版本中的代码(虽然不相同,但是即使相同,我也已经遇到了这个问题)。

顺便说一句,当发生这种情况时,如果我按住CTRL键并再次按住该左键,则一切恢复正常(运动停止)。

(Q2)等距特征将Z视为高度,而重力分量将Y用作高度。这不是问题吗?例如,我可以告诉重力使用y之外的其他值作为高度吗?

最佳答案

关于(Q1),运动由击键和击键事件管理。如果在触发运动开始时更改选项卡,则Fourway组件将永远不会再发生任何键盘停止事件。您可以使用以下解决方法:

Crafty.settings.modify("autoPause", true);


启用autoPause(在init函数中的某个位置)会在浏览器选项卡中未运行时暂停游戏。然后,您可以通过触发加锁事件或阻止播放器组件移动来对此事件做出反应:

player.bind('Pause', function() {
    this.disableControl();
});

player.bind('Unpause', function() {
    this.enableControl();
});


如果您在播放器组件中处理动画,那么您可能也想在那里停止动画。

10-08 12:05