Javascript 如何更改网格';s在three.js中函数animate()中的位置?

Javascript 如何更改网格';s在three.js中函数animate()中的位置?,javascript,animation,three.js,Javascript,Animation,Three.js,我在three.js中有一个简单的网格(实现为three.js master\examples\webgl\u loader\u collada\u keyframe.html): 我想更改此网格在函数animate()中的位置 我尝试过几种方法,但以下示例均无效: 1.: 2.: 3.: 4.: 结果每次都是黑屏 奇怪的是,我可以在同一个代码区域更改相机和灯光的位置: pointLight.position.set(10, 20, 03);

我在three.js中有一个简单的网格(实现为three.js master\examples\webgl\u loader\u collada\u keyframe.html):

我想更改此网格在函数animate()中的位置

我尝试过几种方法,但以下示例均无效:

1.:

2.:

3.:

4.:

结果每次都是黑屏

奇怪的是,我可以在同一个代码区域更改相机和灯光的位置:

                pointLight.position.set(10, 20, 03);
                camera.position.set(12, 44, 13);
                camera.lookAt(new THREE.Vector3(33, 45, 54));
但是,网格的position.set失败。 是否可以在函数animate()中更改网格的位置

我试过:

"sphere.position.x = 20;"
结果是一个黑色的窗口

下面您可以看到详细的控制台日志:

日志对“sphere.position.x=20;”上方行的注释:

此问题日志的其他详细信息:

"animate @ index_final.html:260
(anonymous function) @ index_final.html:98
parse @ ColladaLoader.js:225
request.onreadystatechange @ ColladaLoader.js:113"

引用网格的
sphere
变量不在
animate()
函数的范围内。 通过删除
var
,使其成为全局变量:

sphere=new-THREE.Mesh(球墨法、球材料法)

然后在
animate()
中调用
sphere.position.set(20,20,20)应该这样做

或者,如果要设置移动动画:
sphere.position.x+=1



免责声明:请记住,应该避免使用全局变量,因为它们是邪恶的>:)

sphere.position.x=newValue
应该可以(不确定“+=”)。。。也许还有另一个错误。浏览器控制台告诉你什么了吗?我已经试过你的建议了。请看我编辑的问题。你的建议很有效。这就是解决办法。
sphere.position.x += 1;
sphere.translateX(50);
                pointLight.position.set(10, 20, 03);
                camera.position.set(12, 44, 13);
                camera.lookAt(new THREE.Vector3(33, 45, 54));
"sphere.position.x = 20;"
"Uncaught TypeError: Cannot set property 'x' of undefined"
"animate @ index_final.html:260
(anonymous function) @ index_final.html:98
parse @ ColladaLoader.js:225
request.onreadystatechange @ ColladaLoader.js:113"