遊戲操作按鍵識別的原理-----JavaScript鼠標鍵盤事件

遊戲操作按鍵識別的原理-----JavaScript鼠標鍵盤事件

前言

      可能有人或許會好奇爲什麼玩遊戲中敲擊某個鍵或者鼠標左鍵/滾輪/右鍵敲擊就能執行遊戲中所設定的操作,難道是遊戲開發者不用寫程序計算機就能自動識別你敲擊的是哪個鍵並執行,NO! NO! NO! 這個與鼠標鍵盤事件相關。

文章思維導圖

在這裏插入圖片描述

鼠標事件

1.click點擊

document.onclick = function() {
    console.log("click");
}

// 在頁面點擊時觸發,控制檯輸出   click

鼠標點擊後控制檯的顯示
在這裏插入圖片描述

2.mousedown 按下

document.onmousedown = function() {
        console.log("mousedown");
    }
     // 在按下時觸發,控制檯輸出 mousedown

鼠標點擊後控制檯的顯示
在這裏插入圖片描述

3.mouseup 擡起

document.onmouseup = function() {
        console.log("mouseup");
    }
    // 在擡起時觸發,控制檯輸出 mouseup

鼠標點擊後控制檯的顯示
在這裏插入圖片描述

                  通過以下介紹可以大家應該可以看出:
      click = mousedown +mouseup
      那麼就一個一問題如何區分是左鍵點擊的還是右鍵點擊的還是滾輪點擊的?
      區分左右鍵就有這樣一個東西----button

document.onmousedown = function(e) {
        console.log(e)
    }
    // 在鼠標按下時觸發,控制檯輸出MouseEvent

在這裏插入圖片描述
      此圖是在鼠標點擊後控制檯中的顯示

【如何打開控制檯:瀏覽器中網頁上鼠標右鍵選擇檢查再選擇console】
在控制檯中輸出的MouseEvent 裏找到button
在這裏插入圖片描述
button:0 代表什麼呢?代表是左鍵敲擊的
button:1 代表是滾輪敲擊的
button:2 代表是右鍵敲擊的
注:只有mousedown 和 mouseup 可以區分左右鍵,click只能監聽左鍵

document.onmousedown = function(e) {
        if (e.button == 2) {
            console.log("right");
 //如果button 爲2      即點擊鼠標左鍵   控制檯輸出right
        } else if (e.button == 0) {
            console.log("left");
  //如果 button 爲 0 即點擊鼠標右鍵   控制檯輸出left
        } else {
            console.log("scroll");
   //如果button 爲 0 即點擊鼠標滾輪  控制檯輸出scroll
        }
    }

在這裏插入圖片描述
鼠標從左到右依次點擊後控制檯的顯示

如何區分click 和mousedown 呢?

var firstTime = 0;
//默認初始點擊時間(即按下的時間)爲0
var lastTime = 0;
//默認最終點擊時間(即擡起的時間)爲 0 
var key = false;
document.onmousedown = function() {
    firstTime = new Date().getTime();
}
document.onmouseup = function() {
    lastTime = new Date().getTime();
    if (lastTime - firstTime < 300) {
  
        key = true;
    }
}
document.onclick = function() {
        if (key) {
            console.log("click");
            key = false;
        }
    }
      //從按下到擡起小於300毫秒 即爲點擊 否則即爲拖拽

【300毫秒爲什麼概念呢? 300毫秒即爲0.3秒 ,一般點擊一次很快就會擡起,時間小於0.3秒】
4.mouseleave/mouseenter
當鼠標移動至選定區域時觸發時間
例如:規定一個頁面中有一個紅色方塊,當鼠標移上去爲藍色

 <div style="width: 500px; height: 500px; background-color: red;"></div>
    <script type="text/javascript">
        var div = document.getElementsByTagName("div")[0];
        div.onmouseover = function() {
            div.style.background = "blue";
        }
    </script>

5.mouseout/mouseleave
當鼠標離開指定區域觸發事件
例如:仍是剛纔那個紅方塊,當鼠標移開後變成黃色

 <div style="width: 500px; height: 500px; background-color: red;"></div>
    <script type="text/javascript">
        var div = document.getElementsByTagName("div")[0];
        div.onmouseover = function() {
            div.style.background = "blue";
        }
        div.onmouseout = function() {
            div.style.background = "yellow";
        }
        </script>

6.mousemove
鼠標移動時觸發事件
例如:控制檯上顯示鼠標移動至的位置的座標

<div></div>
    <script type="text/javascript">
     var div = document.getElementsByTagName("div")[0];
        document.onmousemove = function(e) {
            var event = e || window.event;
            console.log(e.pageX + " " + e.pageY);
            div.style.left = e.pageX + "px";
            div.style.top = e.pageY  + "px";
        }
     </script>

在這裏插入圖片描述
此圖爲鼠標移動過的位置的的座標

鍵盤事件

1.keypress 敲擊鍵盤

document.onkeypress = function() {
        console.log("keypress");
    }
    //鍵盤敲擊後,控制檯中顯示 keypress

2.keydown 按下

document.onkeydown = function() {
        console.log("keydown");
    }
     //鍵盤按下後,控制檯中顯示 keydown

3.keyup擡起

document.onkeyup = function() {
        console.log("keyup");
    }
     //鍵盤按下後,控制檯中顯示 keyup

順序:
keydown > keypress > keyup

keydown 和 keypress 的區別:

keydown 可以響應任意鍵盤按鍵,keypress只可以響應字符類鍵盤按鍵
keypress 返回 ASCLL碼,可以轉換相應字符

document.onkeypress = function(e) {
        console.log(String.fromCharCode(e.charCode));
    }
    //AScll碼轉換爲對應的鍵盤上的按鍵

在這裏插入圖片描述
鍵盤從a依次敲到k後控制檯上的顯示

下圖爲ASCLL碼錶(部分)
在這裏插入圖片描述

文本操作事件

1.input
2.blur
3. focus
4. change

窗體操作事件

(window上的事件)

1.scroll
2.load

結語

      本文主要介紹了鼠標鍵盤事件的用法以及按鍵識別的方法。本文主要介紹鼠標鍵盤事件,故一筆帶過文本操作事件和窗體操作事件。
(文章如有不當還請諒解和指導)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章