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

标签 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 模型并将所有网格放入我当前所在函数的头变量中。但是,当我运行上面的代码时,它在 firebug 中显示类型错误。模型加载成功,但错误如下

TypeError: a is undefined Three.js Line 55

我应该怎么做才能修复这个错误?

最佳答案

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

关于javascript - 如何将局部变量值赋给函数的变量 [Three.js] JSON Loader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16386367/

相关文章:

Javascript 按键 addEventListener

javascript - 将 GooglePay 与 React 集成

javascript - 阴影在 Three.js 中重复

javascript - THREE.Raycaster 无法与缩放的 THREE.Sprite 正常工作

javascript - 从两个数组创建 JSON 对象

Three.js 法线贴图渲染方式不同 windows/mac

javascript - 当我想使用 CSS 过渡/动画时,如何获得显示和淡出的提示?

javascript - 按多个键过滤 JSON 数据

javascript - 在knockoutjs中绑定(bind)JSON和表

java - 如何重新设计这个 firebase 数据库以使用最少的类?