我正在使用 ThreeJS 创建人们可以单击立方体的交互。然而,这些立方体在点击时表现不同(不同的颜色动画,以保持想法简单)。
我的想法是创建 THREE.Mesh 对象的扩展类并添加我的自定义函数和属性。这将有助于隔离多维数据集的不同行为并提供更清晰的代码。
我尝试使用John Resigs 的函数来扩展类,但它似乎只适用于最终扩展他的“类”类的类。
有没有办法做到这一点?
我正在使用 ThreeJS 创建人们可以单击立方体的交互。然而,这些立方体在点击时表现不同(不同的颜色动画,以保持想法简单)。
我的想法是创建 THREE.Mesh 对象的扩展类并添加我的自定义函数和属性。这将有助于隔离多维数据集的不同行为并提供更清晰的代码。
我尝试使用John Resigs 的函数来扩展类,但它似乎只适用于最终扩展他的“类”类的类。
有没有办法做到这一点?
有几种方法可以在 Javascript 中创建基于类的系统。John Resig 的“类”是一个很棒的类,但它不是 Three.js 使用的继承类型。
注意Cube 类文件中的行:
THREE.Geometry.call( this );
Javascript 没有为类继承提供内置模型,因此除非您使用将继承融入类构造的库(如 John Resig 的),否则您必须显式调用 super 方法。
如果在您的类中调用,您的类将从 CubeGeometry 继承:
THREE.CubeGeometry.call( this );
您可能还希望将 CubeGeometry 设置为原型:
THREE.MyCubeGeometry.prototype = new THREE.CubeGeometry();
THREE.MyCubeGeometry.prototype.constructor = THREE.MyCubeGeometry;