开发者社区> 问答> 正文

jq或者js如何能达到键盘组合的事件?

想做一个用js做的游戏,类似冒险岛这样的横盘游戏来学习js。
但是没想到突然遇见了这么一个问题,js和jq都可以达到键盘监听事件。上下左右都可以用js来获取当前的event.which来判断它的值来执行对应的动作。
但是突然想到了。如果我想做前进加跳跃该是什么思路呢?
问了一些朋友,他们说有种办法,是这样:
screenshot

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
<html xmlns="http://www.w3.org/1999/xhtml">  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />  
<script src="lib/jquery-1.6.4.min.js" type="text/javascript"></script>  
<script type="text/javascript">  
$(document).ready(  
    function(){  
        document.onkeydown = function()  
        {  
            var oEvent = window.event;  
            if (oEvent.keyCode == 13 && oEvent.ctrlKey) {  
                alert("你按下了ctrl+enter");  
            }  
        }  
    }  
);  
</script>  
<title>无标题文档</title>  
</head>  
<body>  
</body>  
</html> 

这两种办法都比较生疏。不知道用过js做过类似效果的朋友思路是怎么样的呢??
![Uploading screenshot . . .]()

展开
收起
小旋风柴进 2016-05-31 11:08:07 2368 0
2 条回答
写回答
取消 提交回答
  • // 上下左右 斜

                let time = ''
                let a = []
            document.onkeydown =(e)=>{
                a[e.which] = true              // 判断 ☆
                time = setTimeout(()=>{
                    a[37]&& (box.style.left =box.offsetLeft-5+'px')
                    a[38]&& (box.style.top = box.offsetTop-5+'px')
                    a[39]&& (box.style.left =box.offsetLeft+5+'px')
                    a[40]&& (box.style.top = box.offsetTop+5+'px')
                },160)      =>> 移动速度 
            }
            document.onkeyup =(e)=>{
                a[e.which]=false
            }
    
    2020-03-01 17:31:59
    赞同 1 展开评论 打赏
  • <!DOCTYPE html>
    <html>
    <head>
        <title>key</title>
        <meta charset="utf-8">
        <meta name="renderer" content="webkit">
    </head>
    <body>
        <p id='p'></p>
        <script>
            var keyT;
            window.onkeydown = function(e){
                var timeout;
                if(!keyT){
                    keyT=true;
                    if(e.keyCode==65){
                        p.innerHTML="你单击了a";
                        timeout=setTimeout(function(){
                            keyT=false;
                        },200)
                    }
                }else{
                    keyT=false;
                    if(e.keyCode==65){
                        p.innerHTML="你双击了a";
                    }
                }
            }
        </script>
    </body>
    </html>

    双击判断事件但是有个不好的bug就是双击事件必须会触发一次单击事件。

    2019-07-17 19:21:35
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
JavaScript面向对象的程序设计 立即下载
Delivering Javascript to World 立即下载
编程语言如何演化-以JS的private为例 立即下载