用户同时按下两个或多个按键时,如何判断用户按下了哪些键:
比如如何判断用户同时按下了‘A’和‘H’键
segmentd 的 Clark 提供的思路(原文链接):
Ctl,alt是有专门判断的属性的。如果是其他的组合,我有想法,就是keydown的时候,push到Array里面存着,keyup的时候在删掉对应的。每次keydown的时候检查一下array。
最后实行代码为:

<img id="imgPlane" src="" alt="飞机" /><script type="text/javascript">var keyCodeArry = [];document.onkeydown = function(ev) {var oEvent = ev || event;keyCode = oEvent.keyCode;keyCodeArry = addKeyCodeArry(keyCode, keyCodeArry);console.log(keyCodeArry);}document.onkeyup = function(ev) {var oEvent = ev || event;keyCode = oEvent.keyCode;keyCodeArry = deletKeyCodeArry(keyCode, keyCodeArry);console.log(keyCodeArry);}function addKeyCodeArry(num, arr) {var check = 0;for(var i = 0; i < arr.length; i++) {if(arr[i] == num) {check = 1;}}if(check == 0) {arr.push(num);}return arr;}function deletKeyCodeArry(num, arr) {for(var i = 0; i < arr.length; i++) {if(arr[i] == num) {arr.splice(i, 1);}}return arr;}var body = document.getElementsByTagName("body")[0];var x = 300;var y = 200;body.addEventListener("keydown", function(e) {console.log(e.keyCode);var imgPlane = document.getElementById("imgPlane");var speed = 10;console.log(x + " " + y);for(var i=0; i < keyCodeArry.length; i++) {keyCode = keyCodeArry[i];if(keyCode == 87) {//wy -= speed;}if(keyCode == 83) {//sy += speed;}if(keyCode == 65) {//ax -= speed;}if(keyCode == 68) {//dx += speed;}}imgPlane.style.top = y + "px";imgPlane.style.left = x + "px";});function lan_Click() {var lan = document.getElementById("language");var lans = ["C", "C++", "Java", "Php", "C#"];if(lan.children.length == 0) {for(var i = 0; i < lans.length; i++) {var li = document.createElement("li");li.innerHTML = lans[i];//动态绑定事件li.addEventListener("click", function(e) {console.log(e.path[0].innerHTML);});lan.appendChild(li);}} else {lan.innerHTML = null;}}</script>

通过按下W/A/S/D键控制飞机移动,利用网友的思路,可以实现斜向移动。

JavaScript捕获同时多个按键-非组合键相关推荐

  1. php 按键连击,写了一个独立按键 支持组合键、单键长按,连发功能的例子

    你好,我在调试你贴上的程序,发现单个按键都正常,为什么组合键就不正常呢?代码如下: #include #define K_STOP                (1< #define K_ST ...

  2. Qt模拟键盘按键与组合键

    Tab键: QKeyEvent tabKey(QEvent::KeyPress, Qt::Key_Tab, Qt::NoModifier);QCoreApplication::sendEvent(th ...

  3. js简单的设置快捷键,hotkeys捕获键盘键和组合键的输入

    设置快捷键 这是一个强健的 Javascript 库用于捕获键盘输入和输入的组合键,它没有依赖,压缩只有只有(~3kb). hotkeys on Github hotkeys预览 __ __ __ | ...

  4. 关闭笔记本显示器指定组合键才能打开_八大品牌笔记本Fn组合键大全

    掌握笔记本Fn组合键,对全面了解笔记本电脑的功能至关重要,这些组合键能够让你轻松的使用笔记本.不同品牌的电脑Fn组合键有所不同.下面分别介绍联想.华硕.戴尔.三星.惠普.东芝.NEC.IBM八大品牌笔 ...

  5. 计算机剪切功能是哪个组合键,剪切快捷键是哪个?电脑剪切快捷键大全

    一直都习惯了使用鼠标右键进行剪切操作,但最近遇到一个本文编辑器,右键菜单中只有复制和粘贴选项,并没有剪切选项,如果要进行剪切操作,就必须用到剪切快捷键.剪切快捷键是哪个?电脑用了这么多年,由于快捷键用 ...

  6. 计算机剪切功能是哪个组合键,剪切快捷键是哪个 电脑剪切快捷键大全

    一直都习惯了使用鼠标右键进行剪切操作,但最近遇到一个本文编辑器,右键菜单中只有复制和粘贴选项,并没有剪切选项,如果要进行剪切操作,就必须用到剪切快捷键.剪切快捷键是哪个?电脑用了这么多年,由于快捷键用 ...

  7. C# 如何捕获键盘按钮和组合键以及KeyPress/KeyDown事件之间的区别 (附KeyChar/KeyCode值)

    1. 首先将窗口属性KeyPreview设为true,如果属性对话框中找不到,就直接在代码里添加:  2. 添加KeyPress / KeyDown事件: 1.KeyPress 和KeyDown .K ...

  8. 计算机中的CNC键代表什么,国内数控(CNC)机床操作面板按键及功能组合键作用(全套)对照...

    常见数控(CNC)机加按键.组合功能 1.进入控制系统:通过点击屏幕最右下角的功能键(next键)并同时按下靠左侧的电源键 2.屏保待机:如果需要很长加工周期并无需任何额外操作时,可以通过同时按下CA ...

  9. 非英文键盘组合键失效的一种可能

    使用非英文键(101)键盘进行输入,不少字符都无法正常输出,这应该算是一个还蛮常见的国际化问题,虽然其root cause千差万别.本文即将讲述一个用意大利键盘输入组合键时发生的异常情况,并尝试分析失 ...

最新文章

  1. python post与get的区别_python中get和post有什么区别
  2. [Hadoop in China 2011] 何鹏:Hadoop在海量网页搜索中应用分析
  3. 多少人举报才封手机号_一个人赚多少钱,才敢回家过年?
  4. 在U盘上运行Win8!使用 Windows To Go 制作便携的 Win8 U盘/移动硬盘教程 (视频)
  5. 图论:dij算法优化:双端队列及详细证明
  6. linux init 7,Linux 之 init命令
  7. SFTPUtils工具类及使用
  8. 使用netkit搭pppoe服务器
  9. sql server数据库中 smallint, int ,bigint ,tinyint的区别与长度
  10. 弹性波波长计算公式_声波是一种弹性波(纵向应力波).ppt
  11. 卡卡云模板(适配彩虹发卡系统)
  12. [translate]Multimodal Self-Paced Learning for Multi-Omics Feature Selection and Data Integration
  13. 1660 super安装tensorflow1.15
  14. 飞塔防火墙虚拟服务器,飞塔防火墙模拟(1):模拟器使用方法 | 网络之路博客(公众号同名)(其他平台网络之路Blog)...
  15. 计算机学校属于什么学历,技校毕业是什么学历 技校属于什么文凭
  16. 计算机学院元旦晚会主题名称,计算机学院形式多样精彩纷呈的元旦联欢晚会
  17. GCC详解-gcc之-Wl选项
  18. 有限元仿真工程师,不可不知的ncode结构疲劳仿真分析
  19. 小程序毕设作品之微信美食菜谱小程序毕业设计成品(5)任务书
  20. HP-UX系统日志文件

热门文章

  1. 不正方形(四个点构成一个凸四边形)
  2. 国内专业web报表工具,完美解决中国式报表难题
  3. 还有未完待续的瓜哦!
  4. n阶差分方程重根计算公式的一般证明
  5. taro安装踩坑记录
  6. 阅读感悟《给中年程序员的温暖人心的巴比奇的故事》
  7. 编解码注入、二次注入、DNSlog盲注
  8. RK3588 Android平台SPI NOR+PCIE SSD实现大容量存储方案
  9. Win10自动拨号上网设置方法
  10. 一次与sql注入 webshell 的美丽“邂逅”