我正在使用kongregate shell將一個gwt遊戲從libgdx導出到Kongregate,該shell創建一個iframe並將遊戲放入其中。從環顧四周,我發現了一個關於如何讓window.focus()讓遊戲真正獲取鍵盤輸入的技巧,但是當我使用箭頭鍵時,它會滾動實際的瀏覽器窗口並使其非常煩人。如何防止使用libgdx gwt遊戲滾動窗口
有沒有什麼辦法可以在iframe處於焦點時忽略瀏覽器來避免這種情況?
感謝
我正在使用kongregate shell將一個gwt遊戲從libgdx導出到Kongregate,該shell創建一個iframe並將遊戲放入其中。從環顧四周,我發現了一個關於如何讓window.focus()讓遊戲真正獲取鍵盤輸入的技巧,但是當我使用箭頭鍵時,它會滾動實際的瀏覽器窗口並使其非常煩人。如何防止使用libgdx gwt遊戲滾動窗口
有沒有什麼辦法可以在iframe處於焦點時忽略瀏覽器來避免這種情況?
感謝
在自己的網站上發佈遊戲的時候我有過這樣的問題,我問的libGDX GitHub的問題跟蹤和我上了issue此響應。
總結什麼maximojr告訴我,你需要一個額外的功能添加到讀劇本:
function preventUseOfDefaultKeys(event) { // You can change the function name
if(event.keyCode == 38) { // 38 would be the up arrow
event.preventDefualt();
}
}
然後,在你的HTML文件的體標籤(因爲這是一個iframe我米不知道這將如何工作,但它是值得一試),而不是<body>
寫<body onkeydown="preventUseOfDefaultKeys(event);" >
。這應該工作,雖然我遇到了我的系統上的某些鍵的問題。
希望這會有所幫助!
我遇到了同樣的問題。有我得到的解決方案。
<body>
標籤的創建一個文本字段:<input type="text" id="shazam" style="position: absolute; left: 50%; z-index: -1; border-color: transparent; outline: none; color: transparent; background-color: transparent;" />
的「位置」絕對意味着它會忽略其他元素,「左」會(幾乎)放在窗口的中心,'z-index'將首先渲染它,將其他元素放在此處(在本例中爲由libgdx生成的畫布)。沒有輪廓和顏色設置爲透明只是爲了確保這個輸入是不可見的。
<head>
標籤把這個腳本:<script type="text/javascript"> window.onkeydown = function(e) { if(e.keyCode == 32) { document.getElementById("shazam").focus(); } }; window.onscroll = function(e){ document.getElementById("shazam").style.top=window.pageYOffset+"px"; }; </script>
這將禁用向下空間滾動,而且畫布之外的任何內容將不會接收空間鍵。 我只在Google Chrome上測試過。
我知道,這是一個醜陋的解決方法,但是......好吧,工作。
----編輯
現在窗口不會突然當窗口與鼠標滾動後,按空間向上滾動。