- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用three.js在悬停时使矩形更改颜色,但我只能始终做到这一点,而鼠标没有任何区别。我正在关注 guide关于使用的three.js 文档Raycaster
.
这是我的代码
var scene = new THREE.Scene();
scene.background = new THREE.Color(0xffffff);
var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
var raycaster = new THREE.Raycaster();
var mouse = new THREE.Vector2();
function onMouseMove(event) {
// calculate mouse position in normalized device coordinates
// (-1 to +1) for both components
mouse.x = (event.clientX / window.innerWidth) * 2 - 1;
mouse.y = - (event.clientY / window.innerHeight) * 2 + 1;
}
var renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
var geometry = new THREE.PlaneGeometry(2, 2);
var material = new THREE.MeshBasicMaterial({ color: 0xbbbbbb, side: THREE.DoubleSide });
var plane = new THREE.Mesh(geometry, material);
plane.rotation.z = Math.PI/3;
plane.rotation.x = -Math.PI/3;
scene.add(plane);
camera.position.z = 5;
function render() {
// update the picking ray with the camera and mouse position
raycaster.setFromCamera(mouse, camera);
// calculate objects intersecting the picking ray
var intersects = raycaster.intersectObjects(scene.children);
for (var i = 0; i < intersects.length; i++) {
intersects[i].object.material.color.set(0xff0000);
}
renderer.render(scene, camera);
}
window.addEventListener('mousemove', onMouseMove, false);
window.requestAnimationFrame(render);
任何帮助,将不胜感激。
最佳答案
您的代码中有几个问题:
requestAnimationFrame()
的来电必须发生在动画循环内。 mouse
矢量与 (-1, -1)
.否则,第一次测试(直到光标位于 Canvas 上方)假设鼠标位于屏幕中央,从而直接与您的对象产生交集。 var scene = new THREE.Scene();
scene.background = new THREE.Color(0xffffff);
var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
var raycaster = new THREE.Raycaster();
var mouse = new THREE.Vector2(-1, -1);
function onMouseMove(event) {
// calculate mouse position in normalized device coordinates
// (-1 to +1) for both components
mouse.x = (event.clientX / window.innerWidth) * 2 - 1;
mouse.y = -(event.clientY / window.innerHeight) * 2 + 1;
}
document.addEventListener('mousemove', onMouseMove, false);
var renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
var geometry = new THREE.PlaneGeometry(2, 2);
var material = new THREE.MeshBasicMaterial({
color: 0xbbbbbb,
side: THREE.DoubleSide
});
var plane = new THREE.Mesh(geometry, material);
plane.rotation.z = Math.PI / 3;
plane.rotation.x = -Math.PI / 3;
scene.add(plane);
camera.position.z = 5;
camera.updateMatrixWorld();
function render() {
requestAnimationFrame(render);
// update the picking ray with the camera and mouse position
raycaster.setFromCamera(mouse, camera);
// calculate objects intersecting the picking ray
var intersects = raycaster.intersectObjects(scene.children);
if (intersects.length > 0) {
intersects[0].object.material.color.set(0xff0000);
} else {
material.color.set(0xbbbbbb);
}
renderer.render(scene, camera);
}
render();
body {
margin: 0;
}
canvas {
display: block;
}
<script src="https://cdn.jsdelivr.net/npm/three@0.118.3/build/three.js"></script>
关于three.js - 仅在 Hover Three.js 上更改颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62935044/
正如您在此 JSFiddle 中看到的那样,当您将鼠标悬停在 text-content 上时; opacity img 和 img 类返回到正常状态,我想保持 :hover 来自 img 和 img
在 Safari 上,CSS :hover 在具有固定位置的子级在父级外部打开然后关闭后仍然处于事件状态。 鼠标重新进入悬停区域后,它再次起作用。 演示:http://jsfiddle.net/HSC
使用 JQuery,当元素处于悬停状态时,我尝试链接几个函数。 我通常会使用.hover事件函数,但在阅读了一些教程后,我使用 .on 阅读了该函数更好,因为您可以使用一个事件处理程序来监视文档中的所
我已经解决了很多具有相似标题的已解决问题,但我尝试的似乎都没有用。 我希望将 ava.png 图像重定向到另一个页面,但是在悬停时我想要一个 :before 图像(ava_background_hoo
使用以下 html,当我将鼠标悬停在子对象上时,父对象的背景为绿色。我怎样才能阻止这种情况发生?如果我悬停在子元素之外,我确实需要绿色背景。 CSS3 很好。 .parent { padding:
我有两个默认设置为隐藏的子元素。 .child1, .child2{ visibility:hidden; } #parent :hover .child1, #parent:hover .child
所以我试图让我的分页在悬停时平滑地滑动,然后在鼠标离开元素后滑回其原始位置。我已经让它在悬停时滑动,但是当鼠标离开按钮时,它只是快速返回而不是过渡。有人可以帮我解决这个问题吗? 这是我的代码。 #pa
我有一个 jQuery 问题;我想通过将鼠标悬停在另一个元素上来触发元素上的 :hover 事件,控制台显示错误: Uncaught RangeError: Maximum call stack si
我正在挖掘某人编写的一些 css 代码,我发现了这个: li.hover, li:hover { } .hover 和 :hover 有区别吗? 也许某些浏览器对 hover 的行为不同?! 最佳答案
使用以下 html,当我将鼠标悬停在子对象上时,父对象的背景为绿色。我怎样才能阻止这种情况发生?如果我悬停在子元素之外,我确实需要绿色背景。 CSS3 很好。 .parent { padding:
找不到我一直想知道的问题的答案。 .class2 a:hover {} 和 .class2:hover a {} 有区别吗?还是偏爱其中之一? 我一直在使用 .class2 a:hover {} 来改
我不确定标题是否足够好地解释它,但我试图保持简短! 因此,我在页面上散布了许多图像,并为它们创建了一个灯箱画廊(.cboxElement 是调用它的类)。我想添加的是对受灯箱影响的每个图像的悬停效果,
.vpbutton {padding:4px;background-color:#EFEFEF;} .userbox img{padding:8px;background-color:#EFE
我无法让 a:hover 元素正常工作。我是业余爱好者,所以请放轻松...我也尝试过使用#menubar:hover,但这似乎也不起作用。 此代码将进入另一个程序的 header 。我进入这个的唯一原
我到处寻找这个问题的答案,但我找不到任何相关信息。谁能告诉我我们是否可以影响接收元素悬停边界半径属性的区域。以便在击中真实区域查看元素后发生颜色等变化的效果?不要阻止在 DOM 中作为正方形物理存在?
谁能看出我在这里做错了什么? 我在 中有一些文本元素我想要 text-decoration:none在什么时候 悬停在。请参阅下面的 HTML,我认为它应该可以工作,但是当我将鼠标悬停在 上时文字
我正在尝试创建一个可缩放的 map ,当鼠标悬停在 map 图像上时它会工作,类似于 map 在 Flickr 上的工作方式(请参阅右侧栏上的 map - http://www.flickr.com/
我有一张 table ,我有一个用于 tr:hover 效果的全局 css 代码。但有时我不想在我的 table 上使用这种悬停效果。请查看代码并告诉我如何不对该表运行效果。 JSFIDDLE .这里
我重新开发了我们的一个页面,我注意到它在 上使用悬停元素,尽管点击事件是针对 的标签。所以我将其更改为悬停在 上标签。当鼠标快速移动到每个元素上时,需要相当长的时间才能 catch 。我想没有人
我从来都不是 javascript 下拉菜单的忠实粉丝,所以当我可以使用 CSS 设计下拉菜单时,我会的。但是现在我遇到了一个小问题。 我有一个登录按钮和一个小的登录表单模块,它是按钮的兄弟。当我将鼠
我是一名优秀的程序员,十分优秀!