我正在尝试使用这样的行
myObject3D.children.forEach(
function(pChild){
return pChild.position.multiplyScalar(myMultiplier)
}
);
和这个
myObject3D.children.forEach(
function(pChild){
pChild.position.copy(myVector3)
}
);
但由于某些原因,'myObject3D'的子元素中的函数似乎不存在。 ("Uncaught TypeError: pChild.position.multiplyScalar is not a function"
)
但是,'myObject3D'中的元素是'Mesh'对象。
有人可以建议我该怎么办?
由于
答案 0 :(得分:2)
首先,您的forEach
回调不应返回任何内容。
您的第二个代码段似乎没有任何问题。
下面的代码运行没有错误。
var group = new THREE.Object3D();
var geo = new THREE.BoxBufferGeometry(10, 10, 10);
var mat = new THREE.MeshBasicMaterial({
color: "red"
});
var mesh = new THREE.Mesh(geo, mat);
group.add(mesh);
group.add(mesh.clone());
group.add(mesh.clone());
group.add(mesh.clone());
group.add(mesh.clone());
var myVector3 = new THREE.Vector3();
group.children.forEach(function(pChild) {
pChild.position.multiplyScalar(5);
pChild.position.copy(myVector3)
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/88/three.js"></script>
请确认您使用正确类型的对象填充您的论坛。此外,您可以在使用之前测试某个功能是否可用:
if(obj.someFunction){
obj.someFunction();
}