【发布时间】:2012-12-27 00:41:04
【问题描述】:
制作游戏...这样做更有效率?
if (37 in keysDown) { //left arrow
if (sprite.state != 'left') sprite.state = 'left';
}
还是这个?
if (37 in keysDown) { //left arrow
sprite.state = 'left';
}
这是在我的游戏更新函数中调用的(不断地,尽可能快)。
旁注: 这是我的输入键检查代码。
//input
var keysDown = {};
window.addEventListener('keydown', function(e) {
keysDown[e.keyCode] = true;
});
window.addEventListener('keyup', function(e) {
delete keysDown[e.keyCode];
});
【问题讨论】:
-
keydown 和 keyup 会触发事件,使用那些触发器
-
@popnoodles:我想他希望它在游戏循环中只要按住键就触发;不是一次,也不是自动重复。
-
我怀疑这通常是可以回答的,因为对于不同的 JS 运行时,这可能(并且将会)有所不同。
-
谢谢大家。 popnoodles 的评论对我来说是最有用的,因为我正在使用 keydown 和 keyup 事件从数组中添加/删除键。只需在这些事件上设置 sprite.state 将是最好的方法。
-
@Thilo,这取决于后台写入操作的成本。读取对缓存等的影响较小)。此外,这取决于读取和写入的比率,例如条件多久会最终为真?
标签: javascript performance optimization