我无法使用GLTFLoader加载模型

时间:2018-10-15 01:54:16

标签: three.js

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')

1 个答案:

答案 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 );
  } );
}

或者,使用箭头功能(如箭头功能)也可以解决此问题。