如何使用libgdx gwt游戏防止窗口滚动

时间:2013-12-08 13:03:53

标签: html5 gwt iframe libgdx

我正在使用kongregate shell将libgdx中的gwt游戏导出到Kongregate,它会创建一个iframe并将游戏放入其中。从环顾四周,我发现了一个关于放置window.focus()的小窍门,让游戏实际上拿起了键盘输入,但是当我使用箭头键时,它会滚动实际的浏览器窗口,使其非常烦人。

有什么方法可以在iframe处于焦点时忽略浏览器以避免这种情况吗?

由于

2 个答案:

答案 0 :(得分:1)

我在自己的网站上发布游戏时遇到过这个问题,我在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);" >。这应该有效,尽管我在系统上遇到了某些键的问题。

希望这有帮助!

答案 1 :(得分:0)

我遇到了同样的问题。我得到了解决方案。

  1. 在index.html中的<body>标记的开头创建一个文本字段:
  2. <input type="text" id="shazam" style="position: absolute; left: 50%; z-index: -1; border-color: transparent; outline: none; color: transparent; background-color: transparent;" />

    &#39;&#39;&#39;绝对意味着它会忽略其他元素,左边的&#39;将它(几乎)放在窗口的中心和“z-index”#39;将首先渲染它,将其他元素放在此上(在本例中为libgdx生成的画布)。没有轮廓和颜色设置为透明,只是为了确保此输入不可见。

    1. <head>标记处放置此脚本:
    2. <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上测试过。

      我知道,这是一个丑陋的解决方法,但是......好吧,有效。

      ----修改

      现在,在用鼠标滚动窗口后按下空格时,窗口不会突然向上滚动。