javascript - 右键单击时在 div 菜单的标题中显示所选几何图形的名称
问题描述
在我的three.js 场景中,我有4 层使用THREE.BoxGeometry 制作。通过右键单击各个楼层并从出现的 div 菜单中选择一个选项,可以轻松更改楼层的纹理。我的菜单在 html 上为:
<div id="menu" style="position:absolute;display:none;background-color:red">
<span id="menuTitle" color="blue">menu</span>
<br>
<button id="35">Black Floor</button><br>
<button id="36">Wood Floor</button><br>
<button id="37">Blue Floor</button><br>
<button id="38">Grey Floor</button>
</div>
我的 mouseDown 函数如下:
function onMouseDown(event) {
event.preventDefault();
var rightclick;
if (!event) var event = window.event;
if (event.which) rightclick = (event.which == 3);
else if (event.button) rightclick = (event.button == 2);
if (!rightclick) return;
raycaster.setFromCamera(mouse, camera);
var intersects = raycaster.intersectObjects([floor1, floor2, floor3, floor4]);
if (intersects.length) {
intersect = intersects[0].object;
menu.style.left = (event.clientX - rect.left) + "px";
menu.style.top = (event.clientY - rect.top) + "px";
document.getElementById("menuTitle").innerHTML = intersects[0].name;
menu.style.display = "";
}
else{
intersect = undefined;
}
}
我想要做的是在右键单击 floor1 时将“menuTitle”的内部 HTML 更改为 floor1(目前我得到“未定义”)或者更好的是一个特定的字符串(例如,当第 1 层正确时为“Floor 1”点击)。谢谢你!:)
解决方案
您的代码中有一个小错误,而不是
document.getElementById("menuTitle").innerHTML = intersects[0].name;
它应该是
document.getElementById("menuTitle").innerHTML = intersect.name;
返回数组中的相交对象与 Object3D 不同
推荐阅读
- angular - 使用 DatePipe 解析日期
- reactjs - Ionic React 4.11:如何在导航中推送和弹出 (IonNav)
- javascript - 其他 div 元素内的响应式 div 元素
- javascript - 如何在 JavaScript 中使用 map() 循环
- javascript - 如何将数组值放入另一个函数?
- python - 如何将熊猫日期列与硬编码日期进行比较
- wpf - 在 WPF 资源字典中使用 Blend d:Style.DataContext 是否有效?
- excel - 0.2 + 0.1 如何在 Excel 中等于 0.3?
- reactjs - 在组件外部使用 react-i18next t 函数。无法正确使用 Promise
- python - 访问分组熊猫数据框的问题