Javascript 关于狡猾-等距和重力;也是四路

Javascript 关于狡猾-等距和重力;也是四路,javascript,craftyjs,Javascript,Craftyjs,关于这一点,我有两个问题(我也在他们的谷歌群社区中问过,但似乎很少有人关注这一点) 我遵循了本教程,并在crafty的网站上查看了一组块的“等距”演示()。我一直在尝试一些东西,把我在这两方面学到的东西结合起来 (Q1)当我使用fourway组件(在教程中经常使用)时,如果我按住左箭头键,按住CTRL-TAB键并在按住左键的同时退出当前选项卡,然后返回(不一定再按住左键),则我的角色似乎卡在向“左”方向移动的过程中。其他三个方向也会发生这种情况。这是一个已知的问题吗?有没有办法在不改变诡计的情况

关于这一点,我有两个问题(我也在他们的谷歌群社区中问过,但似乎很少有人关注这一点)

我遵循了本教程,并在crafty的网站上查看了一组块的“等距”演示()。我一直在尝试一些东西,把我在这两方面学到的东西结合起来

(Q1)当我使用fourway组件(在教程中经常使用)时,如果我按住左箭头键,按住CTRL-TAB键并在按住左键的同时退出当前选项卡,然后返回(不一定再按住左键),则我的角色似乎卡在向“左”方向移动的过程中。其他三个方向也会发生这种情况。这是一个已知的问题吗?有没有办法在不改变诡计的情况下修复它

firefox 29和chrome 34就是这样。我的代码与本教程最后给出的最终版本中的代码基本相同(虽然不一样,但即使是相同的代码,我也已经遇到了这个问题)

顺便说一句,当这种情况发生时,如果我按住左键按住CTRL-TAB键,然后再按住它,事情就会恢复正常(移动停止)

(Q2)等轴测ish特征将Z解释为高度,重力分量使用Y表示高度。这不是个问题吗?例如,我可以告诉重力使用y以外的其他东西来表示高度吗?

关于(Q1),移动由按键向下和按键向上事件管理。如果在触发移动开始时更改选项卡,则fourway组件将不会再次停止任何keyup事件。您可以使用如下解决方法:

Crafty.settings.modify("autoPause", true);
启用自动暂停(在初始化功能的某个地方)将在浏览器选项卡crafty处于非活动状态时暂停游戏。然后,您可以通过触发keyup事件或阻止播放器组件按如下方式移动来对此事件作出反应:

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

player.bind('Unpause', function() {
    this.enableControl();
});
如果在播放器组件中处理动画,您可能也希望停止动画