4
我想擴展Three.js Object3D類,但不知道如何去做。擴展Three.js類
有這個Stackoverflow的問題,我已閱讀,重新閱讀和嘗試,但無法讓它爲我工作。
Is there a way to extend a ThreeJS object?
任何人都可以提供關於如何得到這個去一些特定的代碼?這是我目前所面對的:
var MyObject3D = function() {
THREE.Object3D.call(this);
MyObject3D.prototype = new THREE.CubeGeometry();
MyObject3D.prototype.constructor = MyObject3D;
}
並創建一個實例:
var thing = new MyObject3D();
var testGeo = new THREE.CubeGeometry(10, 10, 10);
var testMat = new THREE.MeshPhongMaterial();
var testMesh = new THREE.Mesh(testGeo, testMat);
thing.add(testMesh);
但在調用MyObject3D實例的「添加」方法返回一個「東西」有沒有方法「錯誤加。」
這是怎麼回事?
謝謝!!當我創建問題時,CubeGeometry只是一個複製/粘貼錯誤,但你仍然解決了我的問題:)我在構造函數中設置了新類的原型。將它移到固定它之外。我很好奇,爲什麼這會有所作爲。 (您可能已經注意到我仍然在Javascript中學習OO。) – John
原型在構造函數運行之前被應用到對象實例,所以當您在構造函數中設置MyObject3D.prototype時,它不會對第一個使用該構造函數實例化的對象。然而,在構造函數運行一次之後,原型會發生變化,因此所有未來的這種類型的對象都將具有您想要的樣式。 (他們都會有所不同,雖然因爲你正在爲每個對象實例化一個新的對象!) – IceCreamYou
我真的有點理解,夠奇怪的。謝謝!! – John