2013-09-21 17 views
0

我有一個遊戲,我在畫布上聽着w,a,d和箭頭鍵。 但是,當我離開畫布並單擊畫布下方的「單擊此處訂閱」按鈕並嘗試鍵入w,a或d時,它們將不會鍵入。聽衆甚至在畫布上消費鑰匙?

我使用JQuery的按鈕和HTML5畫布的遊戲。

是什麼導致這個和任何想法如何阻止它? 當按鈕被點擊時,有沒有一種方法可以阻止偵聽器,並在 JQuery屏幕關閉時再次啓動?

這就是:http://www.slimedrop.com

回答

0

聽起來你正在收聽針對整個窗口的關鍵事件。

您可以通過設置其標籤索引來允許您的畫布本身接收關鍵事件。

然後在畫布上監聽關鍵事件,而不是在窗口上。

然後,當用戶將焦點更改爲訂閱表單時,畫布關鍵句柄將不再接收關鍵事件。

// 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(); 
+0

我使用document.body.onkeydown =功能(E){checkKeyDown(E);} 有沒有辦法讓它所以其在畫布上,而不是文件? – Wayne

+0

是的,上面的代碼可以讓你處理來自畫布的關鍵事件。只需設置tabindex並在畫布上傾聽。 canvas.addEventListener( '的keydown',yourKeyDownHandler,FALSE); – markE