如何将局部变量值赋给函数[Three.js] JSON Loader的变量

时间:2013-05-05 15:57:59

标签: javascript json three.js webgl

我正在尝试将外部JSON模型加载到场景中,并尝试将其值放到名为head的变量中,因此希望将其添加到场景中。

我做的是,像这样

    var loader = new THREE.JSONLoader();

    this.head = loader.load( "eagle2.js", function( geometry ) {

        var material = new THREE.MeshPhongMaterial(), head;
        head = new THREE.Mesh( geometry, material );
        head.scale.set( 200, 200, 200 );
        head.position.y = 0;

        return head;
    } );

    this.mesh.add(this.head);

我喜欢做的是加载JSON模型并将所有网格物体放到我当前所在函数的head变量中。但是当我运行上面的代码时,它会在firebug中显示类型错误。模型加载成功,但错误就像

  

TypeError:a未定义   three.js所   第55行

我该怎么做才能解决此错误?

1 个答案:

答案 0 :(得分:2)

JSONLoader的方法加载不返回任何内容。相反,它会对服务器进行异步调用并在回调函数中返回数据,因此正确的用法应如下所示:

var self = this;
var loader = new THREE.JSONLoader();

loader.load( "eagle2.js", function( geometry ) {

    var material = new THREE.MeshPhongMaterial(), head;
    head = new THREE.Mesh( geometry, material );
    head.scale.set( 200, 200, 200 );
    head.position.y = 0;

    self.head = head;
    self.mesh.add(head);
} );
相关问题