自從威少砍下45+11+11的大號(hào)三雙之后,網(wǎng)上出現(xiàn)了各種各樣的神級(jí)段子,有一條是這樣的:

  威少:Hey,哥們,最近過(guò)得咋樣!

  濃眉:對(duì)方開(kāi)啟了好友驗(yàn)證,請(qǐng)先添加對(duì)方為好友

  威少:。。。。。。

  JRS:2333333

  看到了一條比賽當(dāng)天的數(shù)據(jù)統(tǒng)計(jì):威少45+11+11,杜少32+8+3,伊巴卡19+11+2,雷吉杰克遜17+3+6,哈登16+6+16,雷霆管理層真應(yīng)該改名雷鋒管理層了,現(xiàn)在對(duì)雷霆管理層的每日一輪都是JRS們的常態(tài)了。

  好了,不扯,接著上一篇博客(H5坦克大戰(zhàn)之畫(huà)出坦克http://www.cnblogs.com/zhouhuan/p/H5_tankgame.html),這一篇來(lái)看看怎么響應(yīng)玩家的操作讓坦克進(jìn)行相應(yīng)的移動(dòng)。

 

  1. 了解keydown事件

  keydown這一鍵盤(pán)事件的觸發(fā)條件為按下鍵盤(pán)上的任意鍵,如果按住不放,則會(huì)重發(fā)觸發(fā)。

  示例:

window.onkeydown = function(){
    alert("Merry Christmas!");
};

  此時(shí)載入頁(yè)面之后,無(wú)論按下哪個(gè)鍵,都會(huì)彈出“Merry Christmas!”的彈窗。

 

  2. 了解鍵碼和字符編碼

 

  ① 鍵碼

  在發(fā)生keydown和keyup事件時(shí),event對(duì)象的keyCode(鍵碼)屬性會(huì)包含一個(gè)代碼,與鍵盤(pán)上一個(gè)特定的鍵對(duì)應(yīng)。對(duì)于數(shù)字字母字符集,keyCode屬性的值與ASCII碼中對(duì)應(yīng)小寫(xiě)字母或數(shù)字的編碼相同。字母中的大小寫(xiě)不影響。

window.onkeydown = function(eve){
    alert(eve.keyCode);
};

  此時(shí)按鍵盤(pán)上的任意鍵,便可得到所按鍵對(duì)應(yīng)的keyCode

  

  ② 字符編碼

  發(fā)生keypress事件時(shí),event對(duì)象的charCode屬性會(huì)包含一個(gè)值,這個(gè)值就是按下的那個(gè)鍵所代表字符的ASCII編碼,并且,同一個(gè)字母的大小寫(xiě)對(duì)應(yīng)的字符編碼也是不一樣的。

  要注意的是,keypress事件只有在按下字符鍵時(shí)才會(huì)觸發(fā),并不是所有的按鍵,像Ctrl, Alt之類(lèi)的就不會(huì)觸發(fā)該事件。

 

  3. 熱身環(huán)節(jié)

 

  ① 獲取玩家的指令

  我們先看看怎么獲取到玩家的操控指令,這里我們寫(xiě)一段代碼:

window.onkeydown = function(eve){
    alert("所按鍵對(duì)應(yīng)的鍵碼是: " + eve.keyCode);
};

  大家運(yùn)行一下就可以知道鍵盤(pán)上每一個(gè)按鍵所對(duì)應(yīng)的鍵碼是多少了,然后取自己需要的按鍵繼續(xù)編寫(xiě)程序。這里需要的是方向鍵的上下左右,當(dāng)然這個(gè)在網(wǎng)上可以查到,也非常方便。

  我們運(yùn)行了之后會(huì)發(fā)現(xiàn),上下左右對(duì)應(yīng)的鍵碼分別是38, 40, 37, 39??紤]到有些玩家習(xí)慣于使用W A S D來(lái)操作,那我們把這幾個(gè)鍵也做進(jìn)去,這幾個(gè)鍵對(duì)應(yīng)的鍵碼分別是87, 65, 83, 68。

  OK,知道了上面這些東西之后我們就可以寫(xiě)出下面這段代碼了:

網(wǎng)友評(píng)論