我正在使用ThreeJS创建一个人们可以点击多维数据集的交互。但是,这些立方体在单击时表现不同(不同颜色的动画,以保持简单的想法)。
我的想法是创建THREE.Mesh对象的扩展类并添加我的自定义函数和属性。这有助于隔离多维数据集的不同行为并提供更清晰的代码。
我尝试使用John Resigs' function to extend classes,但它似乎只适用于最终扩展其“Class”类的类。
有办法做到这一点吗?
答案 0 :(得分:3)
有几种方法可以在Javascript中创建基于类的系统。 John Resig的“Class”很棒,但它不是Three.js使用的继承类型。
请注意the Cube class file行:
THREE.Geometry.call( this );
Javascript没有提供类继承的内置模型,所以除非你使用一个将继承引入类构造的库(比如John Resig),否则你必须明确地调用super方法。
如果你在课堂上调用:
,你的课将继承CubeGeometryTHREE.CubeGeometry.call( this );
您可能还希望将CubeGeometry设置为原型:
THREE.MyCubeGeometry.prototype = new THREE.CubeGeometry();
THREE.MyCubeGeometry.prototype.constructor = THREE.MyCubeGeometry;