我说的伪异步是下面的意思:
比如我写了个乒乓球对战游戏,那么有两个选手,他们都可能同时按键,要想他们之间的按键不相互影响。
下面是我从书上看到的一种思路。
设置一个数组,用于标记按键的状态,当某个按键按下时,设置该按键的状态为true,当放开该按键时,设置为false;
设置一个定时器,定时检查某些特定监听键的状态,如果是true,则执行相应操作。
大概代码如下:
var ping={}//闭包管理资源
ping.keys=[];//记录键的状态
$(function(){//用到了jquery,页面加载完就调用下面的代码
ping.timer=setInterval(fun,30);//设置定时器,fun为每隔30秒调用的方法
$(document).keydown(function(e){
ping.keys[e.which]=true;//设置状态
});//某个按键按下
$(document).keyup(function(e){
ping.keys[e.which]=false;//设置状态
});
});
//下面是定时器调用的方法
function fun(){
.
.
.
检查某些按键的状态,并执行相应操作
.
.
}
这样,两个选手就可以同时按键了。