我注意到在 ThreeJs 中你:
var a = new THREE.BoxGeometry();
scene.add(a);
a.position.z += 23.5;
您将对象立方体及其所有顶点等传递到场景中。但是当您编辑它的变量时,场景
知道新坐标。如果不将 a
传回 scene
,这怎么可能?
最佳答案
发生这种情况是因为您“通过引用”将对象 a
传递给了 scene.add
方法,因此 a
的所有 future 更改都是“由场景
对象已知”。
要演示此行为,您可以在 js 控制台中尝试以下代码:
var a = {foo: 'bar'}, scene = {
add: function(obj) {this.obj = obj},
print: function() { console.log(this.obj.foo);}
});
scene.add(a);
scene.print(); // outputs bar
a.foo = 'baz';
scene.print(); // outputs baz
关于JavaScript 变量更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25838688/