Three.js - 如何访问object3D.children的功能?

时间:2017-11-09 14:15:50

标签: three.js

我正在尝试使用这样的行

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'对象。

有人可以建议我该怎么办?

由于

1 个答案:

答案 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();
}