Rumah > Soal Jawab > teks badan
https://segmentfault.com/q/1010000004868...
这个是上次提到的一个按键问题。
最初想做一个类似冒险岛的横版游戏,来练习js。提高逻辑判断。
角色的最初模仿的是拳皇的动作。
最开始就设想了人物的几种行为机制:
前进
快速前进
按住不动前进
后退
快速后退
按住不动后退
跳跃
前进+跳跃
后退+跳跃
蹲下
现在在求助网友的帮忙,已经搞定了一些按键事件:单击事件,双击事件,组合事件。虽然都有点小瑕疵,但起码能用。
但是现在突然发现“按住不动”的事件也需要在判断一次,思维一下子全乱了。
这么多的行动机制只能用一个js的按键事件,其中的逻辑判断想完全判断出来,我发现不是我一个初学js的人能设计的到的。
突然想问问,如果想用一个js做一个游戏,起初要干点什么?或者说,弄一个需求功能初稿。
有没有js高手能告诉我,这么多的行为机制,用一个按键事件来触发如何能够有一个清晰的思路或者更好的办法??
真的想的是头都大了。。
这个是我判断前进,快速前进,后退和快速后退的function。该如何优化的加入按住不放的前进后退事件呢?
/**
* 控制器
*
*/
function control(num){
is_numclick(num)
}
/**
* 判断是否双击或者单击
*/
function is_numclick(num){
var timeout;
var left_code=37;
var right_code=39;
var tips="";
var is_num;
var is_nums;
/*alert(is_nums)*/
if(num==left_code){
is_num=left_code;
tips="后退";
}else{
is_num=right_code;
tips="前进";
}
if(!keyT){
keyT=true;
//判断is_nums是否有值,有就和is_num对比判断,没有就为true;
if(num==is_num||is_nums==undefined?true:is_num==is_nums){
is_nums=is_num;
console.log("你单击了"+tips);
timeout=setTimeout(function(){
keyT=false;
},100)
}
}else{
keyT=false;
if(num==is_num){
console.log("你双击了"+tips);
}
}
}