三.js - 鼠标悬停效果不会恢复以前的颜色
Three.js - Mouse hover effect doesn't restore previous color
我正在Three.js
创建一个图案,每当用户与其中一个面相交时mouse hover
,它应该变成灰色,当鼠标远离它时,它应该恢复到原来的颜色(浅蓝色)。不幸的是,这并没有发生。这是我认为我遇到问题的代码部分:
if (intersects.length > 0) {
if (intersects[0].object != INTERSECTED) {
if (INTERSECTED) {
INTERSECTED.face.color.setRGB(INTERSECTED.currentRGB);
}
INTERSECTED = intersects[0];
INTERSECTED.object.currentHex = INTERSECTED.object.material.color.getHex();
INTERSECTED.face.color.setHex(0x777777);
INTERSECTED.object.geometry.colorsNeedUpdate = true;
}
} else {
if (INTERSECTED) {
INTERSECTED.material.color.setRGB( INTERSECTED.currentRGB );
}
INTERSECTED = null;
}
我认为它的问题在于 在targetList = []
内部 ,因为使用console.log()
我看到里面没有存储任何东西。在这个小提琴中,您可以找到完整的代码。你偶然知道我做错了什么吗?
提前感谢您的回复!
代码中的几个问题:
-
您似乎使用INTERSECTED.currentRGB来恢复以前的颜色。但是你从来没有把之前的颜色保存到其中(也许object.currentHex应该这样做?)
-
三。Color.setRGB 有 3 个参数:(r, g, b)。 即使将 [r,g,b] 保存到当前 RGB,您的代码也不起作用,因为没有 THREE,因此您不能这样做。在这种情况下,最好使用十六进制。(三.Color.getHex 和 THREE。颜色设置十六进制)
这是代码的固定部分,我更改的行被注释
if (intersects.length > 0) {
if (intersects[0].object != INTERSECTED) {
if (INTERSECTED) {
// Use hex rather than RGB (setRGB uses 3 arguments, hex one)
INTERSECTED.face.color.setHex(INTERSECTED.currentHex);
}
INTERSECTED = intersects[0];
// Save actual color so we can restore it later
INTERSECTED.currentHex = INTERSECTED.face.color.getHex();
INTERSECTED.face.color.setHex(0x777777);
INTERSECTED.object.geometry.colorsNeedUpdate = true;
}
} else {
if (INTERSECTED) {
// Use hex rather than RGB (setRGB uses 3 arguments, hex one)
INTERSECTED.face.color.setHex( INTERSECTED.currentHex );
}
INTERSECTED = null;
}
您可以在此处看到它的工作原理:https://jsfiddle.net/ord2rjw5/3/
相关文章:
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 高亮显示时编辑文本大小和颜色
- 为什么不是't窗口.恢复正常工作吗?(javascript/jquery)
- 用与线条相同的颜色填充多折线图上的点
- 更改使用Chart.js创建的图表中的轴线颜色
- 如何使用jquery更改html中的背景颜色
- 如何临时暂停浏览器渲染,然后恢复整个页面
- NodeJS-readline暂停和恢复事件发射器(逐行读取)
- 动态更改高图中的系列颜色
- 谷歌地图劫持了iphone's滚动(触摸事件)-如何恢复
- jsf中两个字符串的颜色代码差异
- 我们如何使用css或JavaScript在i/j上更改句点(点)的颜色
- 单击功能应反转图像的颜色并恢复先前反转图像的颜色
- 三.js - 鼠标悬停效果不会恢复以前的颜色
- 画布恢复颜色
- 是否可以在每次单击按钮时更改背景颜色并恢复为纯JavaScript中的原始颜色
- 单击时切换按钮的颜色(并恢复其他按钮的颜色)
- D3.js在mouseout上恢复以前的颜色
- 如何将按钮恢复到原来的颜色?
- (HighCharts)手动鼠标悬停后,鼠标悬停时颜色恢复