2

このコードは子で継承を使用します私は親でそれを行う方法を宣言したシーンに何かを追加しますそれは子レベルのシーンを見るときにエラーを取得します

 function parent    (domElement, renderStatistics) {
    this.scene = new THREE.Scene();
    }
function child(domElement) {
    parent.call(this, domElement);
    this.init();
}
child.prototype = Object.create(parent.prototype);

child.prototype.constructor = Young;


child.prototype.init = function () {
function createLab(geometry) {
        var mesh = new THREE.Mesh(geometry, new THREE.MeshFaceMaterial());
        this.scene.add(mesh);  // this error Cannot call method 'add' of undefined
    }
}
4

3 に答える 3

2
child.prototype.init = function () {
var _this = this;
    function createLab(geometry) {
        var mesh = new THREE.Mesh(geometry, new THREE.MeshFaceMaterial());
        _this.scene.add(mesh);  
    }
}
于 2013-04-08T17:17:04.833 に答える
1

エラーの原因は、2行目のdoubleequals= =であるように見えます。

これにより、値の帰属はブール値になり、期待どおりに新しいTHREE.Meshのインスタンスではなくなります。

于 2012-12-10T23:04:56.237 に答える
0

init内に内部関数を作成する必要がある理由がわかりません...

どちらかを試してください

child.prototype.init = function () {
        var mesh = new THREE.Mesh(geometry, new THREE.MeshFaceMaterial());
        this.scene.add(mesh);  // this error Cannot call method 'add' of undefined
}

または

function createLab(geometry) {
    var mesh = new THREE.Mesh(geometry, new THREE.MeshFaceMaterial());
    this.scene.add(mesh);  // this error Cannot call method 'add' of undefined
 };

child.prototype.init = function () {
     createLab.call(this, whatever);
}
于 2012-12-10T22:42:21.537 に答える