我正在导出一个从libgdx到Kongregate的gwt游戏,使用kongregate创建一个iframe并将游戏放入其中。环顾四周,我发现了一个关于使用window.focus()来让游戏实际拾取键盘输入的小窍门,但是当我使用箭头键时,它会滚动实际的浏览器窗口,这也使它非常恼人。
有什么方法可以忽略浏览器时,iframe是焦点,以避免这一点?
谢谢
发布于 2014-12-06 20:48:58
当我在我自己的网站上发布游戏时,我有过这个问题,我在libGDX GitHub问题跟踪器上询问,我在问题上得到了这个回复。
总结maximojr告诉我的内容,您需要在脚本中添加一个额外的函数:
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);" >。虽然我遇到了系统上某些密钥的问题,但这应该可以工作。
希望这能有所帮助!
发布于 2014-12-16 02:22:07
我也面临过同样的问题。我找到了解决办法。
<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生成的画布)。没有轮廓和颜色设置为透明,只是为了确保这个输入将是不可见的。
<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上测试过。
我知道,这是个丑陋的解决办法,但是.好吧,很管用。
-编辑
现在,当鼠标滚动窗口后,当空格被按下时,窗口不会突然向上滚动。
https://stackoverflow.com/questions/20453723
复制相似问题