首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何利用libgdx gwt游戏防止窗口滚动

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

Stack Overflow用户
提问于 2013-12-08 13:03:53
回答 2查看 766关注 0票数 4

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

有什么方法可以忽略浏览器时,iframe是焦点,以避免这一点?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2014-12-06 20:48:58

当我在我自己的网站上发布游戏时,我有过这个问题,我在libGDX GitHub问题跟踪器上询问,我在问题上得到了这个回复。

总结maximojr告诉我的内容,您需要在脚本中添加一个额外的函数:

代码语言:javascript
复制
function preventUseOfDefaultKeys(event) { // You can change the function name
    if(event.keyCode == 38) { // 38 would be the up arrow
        event.preventDefualt();
    }
}

然后,在HTML的body标记中(因为这是一个iframe,我不知道这会有多好,但值得一试),而不是<body><body onkeydown="preventUseOfDefaultKeys(event);" >。虽然我遇到了系统上某些密钥的问题,但这应该可以工作。

希望这能有所帮助!

票数 1
EN

Stack Overflow用户

发布于 2014-12-16 02:22:07

我也面临过同样的问题。我找到了解决办法。

  1. <body>标记的开头在index.html中创建一个文本字段:

<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生成的画布)。没有轮廓和颜色设置为透明,只是为了确保这个输入将是不可见的。

  1. <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>

这将禁用空间上的滚动,但画布之外的任何内容都不会接收空间键。我只在谷歌Chrome上测试过。

我知道,这是个丑陋的解决办法,但是.好吧,很管用。

-编辑

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20453723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档