javascript - 检测到按下多个键以移动 "character/player"

标签 javascript jquery

我有一个到目前为止我得到的例子here (example 1) ,您需要单击“结果”窗口,以便按键移动 Angular 色(w、a、s 和 d 键移动 Angular 色),同时请记住,这尚未经过浏览器测试,仅适用于选择一些现代浏览器。

我现在可以让图像根据需要向上/向下/向左/向右移动,并根据“健康状况”以特定速度移动,并使用良好的 example I found它也随鼠标一起旋转,因此它适用于鸟瞰风格的游戏。

现在,我对如何让图像沿对 Angular 线移动有点困惑,我尝试使用多个 if 语句链接可能的键组合,但它总是采用最后一个按下键。

我真的不知道如何解决这个问题,我是否需要将它们放在某种 while 循环中,以便在按下某个键时将其朝那个方向移动?这会消除对 Angular 线/多个按键的需要吗?

    if ((key == key_W && key == key_D) || (key == key_w && key == key_d) || (key == key_W && key == key_d) || (key == key_w && key == key_D)) {

        // Player Up/Right

    }

或者我是否需要设置某种数组来生成按下的键列表?

我理解并完全意识到使用 Javascript/jQuery 制作游戏并不是制作游戏的最佳方法,它更像是一种实验。

编辑

现在有一个更实用、更感人的 Angular 色 here (example 2) , 但是运动有延迟,所以扩展我的问题,有没有办法减少它?

最佳答案

嗯,这看起来是一个有趣的项目,所以它让我很好奇,我开始四处看看。我在 Quirksmode 上找到了一篇关于使用键码与字符码的文章。我看到您正在检测大写和小写字母。下面的宣传语似乎表明这是不必要的。本文还有关于浏览器兼容性和浏览器与系统之间特殊 key 兼容性的重要文档。例如,Mac 键盘上的命令按钮。它是什么?它如何被检测到并在各种浏览器中表现如何?

for instance, a lower case 'a' and an upper case 'A' have the same keyCode, because the user presses the same key, but a different charCode because the resulting character is different.

http://www.quirksmode.org/js/keys.html

那么问题就变成了,如何检测多次按键。我在上面找到了这个 SO 答案,它非常简单明了。

Can jQuery .keypress() detect more than one key at the same time?

var keys = {};

$(document).keydown(function (e) {
    keys[e.which] = true;
});

$(document).keyup(function (e) {
    delete keys[e.which];
})

更新

基本上我只是引入了上面的代码,删除了你的对 Angular 线代码并迭代了所有移动操作的键数组。

http://jsfiddle.net/mrtsherman/8NW2K/3/

关于javascript - 检测到按下多个键以移动 "character/player",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7810283/

相关文章:

javascript - 为什么javascript错误: "Child is not a function"

javascript - openlayers 集群非常慢,位置不断变化

javascript - 音乐播放器跳过向前/向后功能 JQuery

php - AJAX : Detect connection closed, PHP 继续

javascript - jQuery Sort 后获取更新的订单

javascript - 如何在不将 javascript 嵌入到 html 中的情况下使用 onkeypress?

javascript - Promise 一个异步函数

javascript - d3.js geoJSON 和边界

javascript - 在 Firefox 中与 Unicode 字符交互不起作用

javascript - 将内容加载到 div - 资源问题