想做一个用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);
}