我正在用Three.js制作游戏,我需要获得用户输入.我有两个处理函数;
function press(evt)
{
console.log(evt);
//evt = window.event;
var code = evt.which || evt.keyCode;
switch(code)
{
case KEY.W: input.up = true; break;
case KEY.A: input.left = true; break;
case KEY.S: input.down = true; break;
case KEY.D: input.right = true; break;
case KEY.E: input.e = true; break;
case KEY.Z: input.z = true; break;
case KEY.ONE: input.one = true; break;
case KEY.CTRL: input.ctrl = true; break;
case KEY.P: input.plus = true; break;
case KEY.M: input.minus = true; break;
case KEY.SH: input.shift = true; break;
}
}
function release(evt)
{
console.log(evt);
//evt = window.event;
var code = evt.which || evt.keyCode;
switch(code)
{
case KEY.W: input.up = false; break;
case KEY.A: input.left = false; break;
case KEY.S: input.down = false; break;
case KEY.D: input.right = false; break;
case KEY.E: input.e = false; break;
case KEY.Z: input.z = false; break;
case KEY.ONE: input.one = false; break;
case KEY.CTRL: input.ctrl = false; break;
case KEY.P: input.plus = false; break;
case KEY.M: input.minus = false; break;
case KEY.SH: input.shift = false; break;
}
}
我在其他项目中使用它们,并且它们工作正常.这是我附加事件监听器的方式:
document.addEventListener("keydown",press,false);
document.addEventListener("keyup",release,false);
这在网站正常加载时有效,但在网站全屏显示时无效!
这是init()中的while设置;在body onload事件上调用的函数:
var init = function()
{
started = false;
isFullscreen = false;
changeFsstate = function()
{
if (isFullscreen == true)
{
isFullscreen = false;
game.stop(); //lol
}
else
{
isFullscreen = true;
}
}
container = document.getElementById("container");
document.body.appendChild(container);
document.addEventListener("keydown",false);
document.addEventListener("keyup",false);
document.addEventListener("webkitfullscreenchange",changeFsstate,false);
document.addEventListener("mozfullscreenchange",false);
game = new Game(container);
}
单击播放按钮后,会发生以下情况:
THREEx.FullScreen.request(self.container);
self.renderer.setSize(screen.width,screen.height);
现在,正如我所说,捕获输入工作直到我单击播放按钮(实际上是一个链接),然后控制台只是停止记录事件,就好像它们没有发生一样.
最佳答案
THREEx.FullScreen似乎正在使用此代码:
element.webkitRequestFullScreen();
你需要的是这个:
element.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT);
看起来像this is Chrome-only.
原文地址:https://www.jb51.cc/js/429581.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。