我使用ThreeJS创建一个人们可以点击多维数据集的交互。然而,这些立方体在点击时表现不同(不同的颜色动画,以保持简单)。有没有办法扩展ThreeJS对象?
我的想法是创建THREE.Mesh对象的扩展类并添加我的自定义函数和属性。这将有助于隔离立方体的不同行为并提供更简洁的代码。
我试过使用John Resigs' function to extend classes,但它似乎只适用于最终扩展他的“Class”类的类。
有没有办法做到这一点?
我使用ThreeJS创建一个人们可以点击多维数据集的交互。然而,这些立方体在点击时表现不同(不同的颜色动画,以保持简单)。有没有办法扩展ThreeJS对象?
我的想法是创建THREE.Mesh对象的扩展类并添加我的自定义函数和属性。这将有助于隔离立方体的不同行为并提供更简洁的代码。
我试过使用John Resigs' function to extend classes,但它似乎只适用于最终扩展他的“Class”类的类。
有没有办法做到这一点?
有几种方法可以在Javascript中创建基于类的系统。 John Resig的“类”是一个很好的类,但它不是Three.js使用的继承类型。
注意在the Cube class file行:
THREE.Geometry.call(this);
JavaScript不提供类继承一个内置的模型,所以,除非您使用的是库(如John Resig的),其烘烤继承到一流的施工,你必须明确地调用超级方法。
您的类将从CubeGeometry继承如果你的类里面,你拨打:
THREE.CubeGeometry.call(this);
你也可能会希望设置CubeGeometry为原型:
THREE.MyCubeGeometry.prototype = new THREE.CubeGeometry();
THREE.MyCubeGeometry.prototype.constructor = THREE.MyCubeGeometry;
您是否尝试过这样做常规方式,如:'THREE.Mesh.prototype.your_method = function {}'? – Hassan
@Hassan我正在这样做,但后来通过代码变得混乱。 – PCoelho