JavaScript捕获同时多个按键-非组合键
来源:互联网 发布:phpcurl post json 编辑:程序博客网 时间:2024/05/20 07:14
用户同时按下两个或多个按键时,如何判断用户按下了哪些键:
比如如何判断用户同时按下了‘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) { //w y -= speed; } if(keyCode == 83) { //s y += speed; } if(keyCode == 65) { //a x -= speed; } if(keyCode == 68) { //d x += 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键控制飞机移动,利用网友的思路,可以实现斜向移动。
阅读全文
1 0
- JavaScript捕获同时多个按键-非组合键
- JavaScript 捕获按键
- JavaScript 捕获按键
- javascript捕获键盘组合事件
- c#实现多个按键同时按下检测
- Winform 捕获组合键
- 组合键捕获事件
- HOOK捕获组合键
- 捕获按键
- 捕获组合键 键盘组合键
- javascript非捕获性分组和前瞻
- Java SE 7新特性:同时捕获多个异常类型
- Java SE 7新特性:同时捕获多个异常类型
- android中捕获组合键
- android 中捕获组合键
- 捕获组合键VC编程
- 平板按键组合键判断
- 全局组合按键-老板键
- ngrok使用教程--反向代理
- vue跨域访问spring rest服务
- Android studio打release包错误
- ORACLE:重启后监听报错服务不能启动解决办法
- java-web实现拦截未登录用户
- JavaScript捕获同时多个按键-非组合键
- Android 一个改善的okHttp封装库
- iframe的父子层级之间的调用
- 【POJ 1651】Multiplication Puzzle
- 关于encodeURIComponent 编码的问题
- 大批量数据如何短时间高效的进入数据库,jdbc的batch 以及orcale的mergo into
- android 沉浸式状态栏
- 用友NC63界面新增按钮实现方法(转)
- mysql 性能分析之explain详解