我使用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