0
我有一個遊戲,我在畫布上聽着w,a,d和箭頭鍵。 但是,當我離開畫布並單擊畫布下方的「單擊此處訂閱」按鈕並嘗試鍵入w,a或d時,它們將不會鍵入。聽衆甚至在畫布上消費鑰匙?
我使用JQuery的按鈕和HTML5畫布的遊戲。
是什麼導致這個和任何想法如何阻止它? 當按鈕被點擊時,有沒有一種方法可以阻止偵聽器,並在 JQuery屏幕關閉時再次啓動?
我有一個遊戲,我在畫布上聽着w,a,d和箭頭鍵。 但是,當我離開畫布並單擊畫布下方的「單擊此處訂閱」按鈕並嘗試鍵入w,a或d時,它們將不會鍵入。聽衆甚至在畫布上消費鑰匙?
我使用JQuery的按鈕和HTML5畫布的遊戲。
是什麼導致這個和任何想法如何阻止它? 當按鈕被點擊時,有沒有一種方法可以阻止偵聽器,並在 JQuery屏幕關閉時再次啓動?
聽起來你正在收聽針對整個窗口的關鍵事件。
您可以通過設置其標籤索引來允許您的畫布本身接收關鍵事件。
然後在畫布上監聽關鍵事件,而不是在窗口上。
然後,當用戶將焦點更改爲訂閱表單時,畫布關鍵句柄將不再接收關鍵事件。
// get a reference to the canvas
var canvas=document.getElementById('canvas');
// set canvas to be a tab stop (necessary to get keydown events)
canvas.setAttribute('tabindex','0');
// have handleKeydown handle keydown events on the canvas
canvas.addEventListener('keydown',handleKeydown,false);
// set focus to the canvas so keystrokes are immediately handled
canvas.focus();
我使用document.body.onkeydown =功能(E){checkKeyDown(E);} 有沒有辦法讓它所以其在畫布上,而不是文件? – Wayne
是的,上面的代碼可以讓你處理來自畫布的關鍵事件。只需設置tabindex並在畫布上傾聽。 canvas.addEventListener( '的keydown',yourKeyDownHandler,FALSE); – markE