- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
几个小时以来,我尝试了数十种不同的方法,但都没有效果,如下所示:
document.body.addEventListener("keydown", function() {
THREEx.FullScreen.request();
}, false);
How to make Three.js fullscreen?
那么,这有可能吗?
最佳答案
我有一个项目,其中的 three.js 场景包含在一个 div 中,我添加了一个按钮以将其拉伸(stretch)到全屏模式(并返回)。如果 Three.js 具有在一个函数调用上实现的功能就好了,但手动添加它并不太难。
需要考虑的几件事:
浏览器有全屏模式(在 Chrome 中为 F11),有一个 API 可以从代码中调用,使浏览器进入全屏,所以你可以通过点击按钮来实现。当浏览器进入全屏模式时,标签和任务栏都消失了,所有屏幕区域都可用于您的 HTML 页面。
function openFullscreen() { var elem = document.getElementById("id-webglcanvas"); if (elem.requestFullscreen) { elem.requestFullscreen(); } else if (elem.mozRequestFullScreen) { /* Firefox */ elem.mozRequestFullScreen(); } else if (elem.webkitRequestFullscreen) { /* Chrome, Safari & Opera */ elem.webkitRequestFullscreen(); } else if (elem.msRequestFullscreen) { /* IE/Edge */ elem.msRequestFullscreen(); } elem.style.width = '100%'; elem.style.height = '100%'; }
Three.js 场景(渲染器、 Canvas )位于某个 div 元素内。它由 three.js lib 创建为 canvas 元素,并附加为带有“appendChild”的子元素。检查您的 div 元素,您会在那里看到 canvas 子项。这个 div 元素可以有自己的宽度和高度,但是场景/ Canvas 的宽度和高度是使用 renderer.setSize 函数设置的,它独立于 div。
renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setSize(sceneWidth, sceneHeight); var threeJSCanvas = document.getElementById("id-webglcanvas"); threeJSCanvas.appendChild( renderer.domElement );
当您告诉浏览器进入全屏模式时,同时您希望将场景 div 的高度和宽度设置为全屏大小(但最重要的是它的位置从 0,0 开始)加上您必须将渲染器大小设置为全屏高度和宽度。您可能希望在页面上隐藏其他一些 div 元素,例如覆盖 GUI - 这样您的整个页面实际上就变成了带有渲染器的 div。很有可能,您已经实现了“onWindowResize”函数,该函数在调整浏览器窗口大小时更改渲染器的宽度和高度,如果是这种情况,您将不得不使该函数在全屏模式下运行良好,因为它会自动调用。所以让这个功能成为你的盟友吧。
window.addEventListener( 'resize', onWindowResize, false ); function onWindowResize() { if ( myGlobalFullscreenModeVariable) { var elem = document.getElementById("id-webglcanvas"); var sceneWidth = window.innerWidth; var sceneHeight = elem.offsetHeight; camera.aspect = sceneWidth / sceneHeight; camera.updateProjectionMatrix(); renderer.setSize( sceneWidth, sceneHeight ); } else { // my other resize code } }
当用户离开全屏模式时,您必须手动恢复。更改 div 和渲染器大小,显示隐藏元素等。用户可以通过两种方式离开全屏 - 通过按 gui 按钮或 esc 按钮。您可以定义在全屏模式更改时调用的函数,但您需要将其添加为事件监听器。
if (document.addEventListener) { document.addEventListener('webkitfullscreenchange', fsChangeHandler, false); document.addEventListener('mozfullscreenchange', fsChangeHandler, false); document.addEventListener('fullscreenchange', fsChangeHandler, false); document.addEventListener('MSFullscreenChange', fsChangeHandler, false); } function fsChangeHandler() { if (document.webkitIsFullScreen || document.mozFullScreen || document.msFullscreenElement !== undefined) { /* Run code when going to fs mode */ } else { /* Run code when going back from fs mode */ } }
此代码尚未准备好开箱即用,因为您可能有不同的页面设置,但它确实列出了实现此功能所需考虑的所有内容。
关于three.js - three.js如何进入全屏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50568474/
我正在尝试使用 Qt 制作游戏,因为它太棒了 ;) 而且您可以免费获得所需的所有东西。唯一的问题是更改系统分辨率和设置 QWidget(或 QGLWidget)“真正的”全屏。 你们中有人成功地做到了
有没有办法以全屏模式(没有工具栏、导航)启动 gwt-app? 我只找到了打开新窗口的提示: Window.open("SOMEURL","SOMETITLE", "fullscreen=yes
if (!document.fullscreenElement && !document.mozFullScreenElement && !document.webkitFullscr
我想解释一下我现在在做什么。我开发了一个 aar(sdk) 并且运行良好。但是,我希望我的 sdk 在被调用时占据全屏,即使调用者有一个工具栏。我尝试了此链接中的示例 [ How to set act
我是 Blazor 的新手,我正在尝试了解如何以全屏模式打开浏览器。我知道我可以执行 Javascript 中断并运行 Javascript,但这违背了 Blazor 的目的。 如何在 Blazor
我正在创建一个全屏应用程序,并且想知道是否有某种方法可以使 NSAlert 位于我创建的 CGDisplayCapture 之上。现在,NSAlert 显示在显示捕获后面。我的主窗口显示得很好(在使用
有人可以解释一下下面的代码是如何工作的吗? 元素指的是视频,全屏指的是页面上的链接。 我无法理解 if 语句 var element = document.getElementById('elemen
我想要实现的是类似于 Instagram 应用内网络浏览器,在您点击广告时使用: 我所做的是,我使用了 WebView bottomSheetDialogFragment,并覆盖了 onCreateD
第二个 ViewController 的顶部有这个空间,它几乎在手机上显示为可关闭的弹出窗口。如何使全屏显示(删除橙色箭头指向的空间)? 最佳答案 这是 iOS 13 的一项更改。用户将开始期望能够滑
我正在尝试在全屏模式下使用 emacs 并使用合适的字体。我有一台运行 Ubuntu 的基于 nvidia 的笔记本电脑。首次加载时,字体很大,认为是 16pt 字体。我使用菜单选项设置了合适的字体(
我有一个 GridView,我使用 BaseAdapter 来调整我的 GridView 中的图像和文本。我有一个问题,当我运行我的应用程序时,我的“GridView”有左、右、上和下边距。我不需要这
是否可以在全屏模式下使用 Android Studio 例如只有我们编码的那个字段应该显示在整个屏幕上。 像这样: 最佳答案 您可以使用“无干扰模式”: 关于全屏 Android Studio,我们在
我正在制作一个应用程序,当手机处于纵向时,我需要 fragment 显示菜单栏(带有设置快捷方式等),但当它处于横向时,我需要全屏。 因此,我有一个管理 2 个 fragment 的 Activity
我想知道是否可以在没有标签栏和导航栏的情况下全屏推送 NavigationController 的 ViewController。我的问题如下: 我的应用在 TabBarController 中嵌入了
我制作了一个1920 * 1048的flash(16:9的屏幕),并将其嵌入到html中喜欢: 问题是: 在 4:3 屏幕中,flash 的宽度为 100%,但顶部和底部有白色填充。看来闪光灯
我想制作一个同时包含多个文本的HTML5视频。 文本应该以不同的css布局(文本颜色、字体、阴影)显示在视频的不同位置(同时) 我试过这个教程http://www.artandlogic.com/bl
需要一些帮助。 我需要水平滑动一次长图像,然后再水平滑动回来...我在这里学习了一个教程 https://css-tricks.com/creating-a-css-sliding-backgroun
我正在制作一个简单的登录页面,并试图将以下图像作为背景全屏:image 我的 CSS 目前看起来像这样: body { background-image: url('/images/bg.jp
我想用透明色覆盖我的背景图片,但颜色没有覆盖背景图片。 这是我的演示: http://jsfiddle.net/farna/73kx2/ CSS 代码: .overlay{ backgroun
有什么方法可以隐藏状态栏并保持操作栏可见吗? 最佳答案 是的,有。您应该在 Activity 的 onCreate 方法中设置 FLAG_FULLSCREEN。 @Override public vo
我是一名优秀的程序员,十分优秀!