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

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

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

<!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做过类似效果的朋友思路是怎么样的呢??

求解~~


<!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就是双击事件必须会触发一次单击事件。


首先js组合键可以参考:
http://stackoverflow.com/questions/10655...

另外,前进加跳跃,不需要用组合键。做游戏你得有个渲染的loop,游戏人物有两个方向的speed属性,根据不同按键的keydown keyup事件来更新对应的speed值就可以了

例子:http://www.createjs.com/demos/easeljs/sp...


我也写了一个代码,按照你的思路写的,可以实现你的要求,不过做游戏肯定要把事件都封装好了,还要再花点功夫。

var ele=[];
document.onkeydown = function(event) {
    var event = event ? event: window.event;
    var keyCode = event.keyCode ? event.keyCode: event.which;
    var enterKey = 13;
    var ctrlKey = 17;
    if (keyCode == enterKey) {
        ele[enterKey] = true;
    } 
    if (keyCode == ctrlKey) {
        ele[ctrlKey] = true;
    }

    var t = setTimeout(function() {
        if (ele[enterKey] && ele[ctrlKey]) {
            alert('ctrl+enter');
        }
        t = null;
        ele = [];
    },
    200);
}
【热门文章】
【热门文章】