gpt4 book ai didi

javascript - 更新了 ThreeJS,现在instanceof 不起作用了?

转载 作者:行者123 更新时间:2023-12-01 01:25:42 25 4
gpt4 key购买 nike

我更新到了 r99,现在我发现我正在执行的任何实例检查都不再有效。

例如,当我遍历这个对象并检查子对象是否是网格时,它返回 false。但是,如果我看一下 child.constructor.name ,它会报告为网格。

object.traverse(child => {
console.log(child);
if (child instanceof THREE.Mesh) {
console.log('THREE.Mesh');
} else {
console.log('NOT THREE.Mesh');
}
console.log(child.constructor.name);
console.log('----');
}

enter image description here

当我简单地更新库时,可能会出现什么问题/发生什么变化?

最佳答案

在无法看到该代码的情况下,不完全确定您正在遍历的对象是如何创建的,但您使用的加载器可能更改了其方法。

检查类型时,我建议您使用内置的 .type 属性,这也是 Three.js 内部用来区分正在处理的对象类型的属性。使用 instanceof 的问题是,在处理子类时可能会得到不明确的结果:

var myMesh = new THREE.Mesh();
console.log(myMesh instanceof THREE.Mesh); // True
console.log(myMesh instanceof THREE.Object3D); // Also true

但是,如果您检查 .type 属性,您将更加确定您正在处理的内容。

console.log(myMesh.type === "Mesh");        // True
console.log(myMesh.type === "Object3D"); // False

关于javascript - 更新了 ThreeJS,现在instanceof 不起作用了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53822414/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com