Three.js JSONLoader'onLoad不是一个函数'

Three.js JSONLoader 'onLoad is not a function'

本文关键字:函数 一个 js JSONLoader onLoad Three      更新时间:2023-09-26

我试图用Three.js设置一个非常简单的场景,显示一个导入的网格正在旋转。我结合了Three.js文档中的几个例子,得到了以下代码:

var scene, camera, renderer;
var geometry, material, mesh;
init();
animate();
function init(){
    scene = new THREE.Scene();
    camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 1, 10000);
    camera.position.z = 1000;
    // geometry = new THREE.BoxGeometry(200, 200, 200);
    var jsonLoader = new THREE.JSONLoader();
    jsonLoader.load('handgun.js', object_to_scene(geometry, material));
}
function object_to_scene(geometry, material){
    material = new THREE.MeshBasicMaterial({
        color: 0xff0000,
        wireframe: true
    });
    mesh = new THREE.Mesh(geometry, material);
    scene.add(mesh);
    renderer = new THREE.WebGLRenderer();
    renderer.setSize(window.innerWidth, window.innerHeight);
    document.body.appendChild(renderer.domElement);
}
function animate(){
    requestAnimationFrame(animate);
    mesh.rotation.x += 0.01;
    mesh.rotation.y += 0.02;
    renderer.render(scene, camera);
}

你可以看到上面评论的原始例子,我们使用Three.js生成了一个Box。这很好。但是,导入自定义三维模型的JSON文件不起作用。检查我的控制台显示以下错误:

TypeError: onLoad is not a function                three.js:18294:4
    THREE.JSONLoader.prototype.load/<()            three.js:18294
    THREE.XHRLoader.prototype.load/<()             three.js:18010

这似乎是Three.js本身的一个错误,但我只发现了两个在Github帐户上报告它的人,他们都被告知Github是用来报告错误的,而不是寻求帮助(如果这不是错误,那是什么?)。

其他人遇到过这个问题吗?如果你已经解决了,你是如何解决的?

谢谢!

而不是

jsonLoader.load( 'handgun.js', object_to_scene( geometry, material ) );

你需要这样做:

jsonLoader.load( 'handgun.js', object_to_scene );

object_to_scene( geometry, material )是一个函数调用,在您的情况下,它返回undefined

three.js r.75