2013-12-08 52 views
4

我正在使用kongregate shell將一個gwt遊戲從libgdx導出到Kongregate,該shell創建一個iframe並將遊戲放入其中。從環顧四周,我發現了一個關於如何讓window.focus()讓遊戲真正獲取鍵盤輸入的技巧,但是當我使用箭頭鍵時,它會滾動實際的瀏覽器窗口並使其非常煩人。如何防止使用libgdx gwt遊戲滾動窗口

有沒有什麼辦法可以在iframe處於焦點時忽略瀏覽器來避免這種情況?

感謝

回答

0

在自己的網站上發佈遊戲的時候我有過這樣的問題,我問的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);" >。這應該工作,雖然我遇到了我的系統上的某些鍵的問題。

希望這會有所幫助!

0

我遇到了同樣的問題。有我得到的解決方案。

  1. 在index.html中開始<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上測試過。

    我知道,這是一個醜陋的解決方法,但是......好吧,工作。

    ----編輯

    現在窗口不會突然當窗口與鼠標滾動後,按空間向上滾動。