【发布时间】:2019-03-11 23:07:58
【问题描述】:
这是一个关于 javascript 和 three.js 编码风格约定的问题。我更喜欢使用最新的 ES-whatever 约定。
我想知道是否不照常做:
var scene = new THREE.Scene();
var cube = new THREE.Mesh(new THREE.BoxGeometry(1,1,1), new THREE.MeshBasicMaterial(0xffffff))
scene.add(cube)
可以将网格对象(和其他对象,可能是灯光甚至相机)存储为场景对象的属性:
const scene = new THREE.Scene(); // or var, but that's not my question
scene.cube = THREE.Mesh(new THREE.BoxGeometry(1,1,1), new THREE.MeshBasicMaterial(0xffffff))
scene.add(scene.cube)
我喜欢在scene 命名空间下引用所有三个.js 对象的想法——这让我以后更容易访问它们。我知道我可以将它与 .name 和 .getObjectByName 一起使用,但这需要更多代码并且对我来说似乎更混乱。
【问题讨论】:
-
投票结束,因为它主要基于意见。也就是说,这是我的观点:这是不好的做法。它并没有真正使您的代码更清晰或更易于推理。事实上,它使事情变得更加复杂。另外,对由 3rd 方库创建/管理的对象的实例进行变异可能是不可预测的。如果您想将相关的数据引用存储在一起,请使用常规的旧对象:
const sceneData = {scene, cube}; -
“见仁见智”对我来说是一个令人满意的答案。我只是想知道这是绝对错误、绝对正确还是介于两者之间。
标签: javascript three.js