typescript - 三个JS。 "Property ' 类型 'Object3D' 上不存在 Material “使用 getObjectByName 时出错

标签 typescript three.js

我通过 this.scene.getObjectByName("MeshName").material 获取可视化的 Material 元素,元素存在,一切正常,当我打印它时,它可以工作。我需要它来改变不透明度。但问题是我收到“属性‘ Material ’在‘Object3D’类型上不存在”错误,因此我无法运行 ng build,我需要使用 //@ts-ignore 忽略它。有人知道为什么会这样吗?

最佳答案

我认为问题在于getObjectByName()的返回类型是Object3D。并且这种类型的对象没有 material 属性。

因此,如果您确定“MeshName”是网格体的名称,则必须将返回的对象转换为 Material ,然后访问 Material :

(this.scene.getObjectByName("MeshName") as THREE.Mesh).material

关于typescript - 三个JS。 "Property ' 类型 'Object3D' 上不存在 Material “使用 getObjectByName 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66818245/

相关文章:

typescript - Cypress + Typescript : How to use JS methods on return values of type Cypress. Chainable<字符串>?

typescript - 如何在 Angular2 中的对象数组上使用 select/option/NgFor

javascript - 顶点颜色取决于它的高度

javascript - Three.js 使用矩阵进行旋转时对象位置的问题

javascript - js中的defer ="defer"是什么意思?

three.js - 三个js编辑器是否可以复用 Material

Javascript 库无需在脚本标签中使用导入

javascript - 我应该安装@types/node 吗?似乎 VSCode 自动安装了它

angular - 我在实现 ngx-Spinner 8.0.3 时遇到错误

javascript - 防止WebGL Three.js 容器捕捉滚动事件