如果鼠标位于浏览器外部,Three.js平面将被隐藏
Three.js plane is hidden if the mouse is outside the browser
我是three.js的新手,我做了一个介绍,但我有一个奇怪的问题。当鼠标位于内容外部时(例如,我重新加载页面,光标位于浏览器的重新加载按钮上或浏览器外部),对象不可见。有人能提出问题出在哪里吗。
问题是运行render()
时未定义mouseX
和mouseY
。您正在将旋转绑定到鼠标,但是由于尚未进入屏幕,mouseX和mouseY仍然未定义。
function render() {
....
mesh4.rotation.x = mouseY; //undefined here
mesh4.rotation.y = mouseX; //undefined here
...
}
只有在onDocumentMouseMove()
上,您才会给mouseX和mouseY一个值
function onDocumentMouseMove( event ) {
var windowHalfX = window.innerWidth/2;
var windowHalfY = window.innerHeight;
mouseX = ( event.clientX - windowHalfX ) / 11000; // <-- gets a value here
mouseY = ( event.clientY - windowHalfY ) / 11000; // <-- and here
}
解决方案是在init()上将两个变量都设置为0,这样在运行render()函数时它们就不会被定义。
function init() {
mouseX = 0;
mouseY = 0;
...
}
以下是jsfiddle:https://jsfiddle.net/L6c8dhxd/3/
我希望这能有所帮助。
相关文章:
- Three.js CanvasRenderer,在将图像纹理设置为平面时出现问题
- getusermedia视频不是在three.js平面上绘制的
- 三.js - 具有透明纹理的相交平面
- 在 Three.js 中获取彩色平面而不是纹理
- 平行于投影平面移动物体,.js
- 三.js - 什么是平面缓冲区几何
- 如何在三.js中更改平面几何图形的颜色?(总是给我一个黑色的结果)
- 三.js不可见平面不能与raycaster.intersectObject一起工作
- 如何使用Underscore.js从平面列表中创建嵌套对象
- 如果鼠标位于浏览器外部,Three.js平面将被隐藏
- 将JS对象隐藏到具有父名称的平面数组中
- 如何在three.js中修复圆角平面上的纹理
- Three.js光线投射和将对象放置在平面上方不起作用
- Three.js中由立方体重叠的平面
- Three.js -创建有纹理的平面圆…
- js平面选色器-位置:固定标题
- 平面着色器(fss.js)的大小为100%
- “Grouped"在Angular JS中使用平面JSON
- JS - Lodash;嵌套对象(父/子)到平面数组
- Js平面数组到多级数组