1

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

我遵循了本教程http://buildnewgames.com/introduction-to-crafty/并查看了 Crafty 网站上一堆块的“等距”演示(http://craftyjs.com/demos/等距/)。我一直在尝试一些东西,结合我在两者中学到的东西。

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

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

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

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

4

1 回答 1

1

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

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

当正在运行的浏览器选项卡处于非活动状态时,启用 autoPause(在您的 init 函数中的某处)将暂停您的游戏。然后,您可以通过触发 keyup 事件或阻止播放器组件像这样移动来对此事件做出反应:

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

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

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

于 2014-08-04T15:44:31.267 回答