this.loadMyModel = function(){
const loader2 = new THREE.GLTFLoader();
// Load a glTF resource
loader2.load(
// resource URL
'Duck.gltf',
// called when the resource is loaded
function ( gltf ) {
//alert('success');
this.scene.add( gltf.scene );
})
};
已包含js文件。
我遇到了一个错误,但我不知道为什么:
TypeError:未定义不是对象(正在评估'this,scene.add')
答案 0 :(得分:0)
在回调函数内部,this
与该函数外部不同。有关this
在JS中如何工作的更多信息,我建议本文:http://www.digital-web.com/articles/scope_in_javascript/
要解决此问题,您应该在回调之外保存对场景的引用:
var scene = this.scene;
this.loadMyModel = function () {
// ...
loader.load( 'foo.glb', function ( gltf ) {
scene.add( gltf.scene );
} );
}
或者,使用箭头功能(如箭头功能)也可以解决此问题。