多个ColladaLoader加载失败。它是线程安全的吗?

时间:2012-10-06 03:43:03

标签: three.js

我正在尝试同时加载多个部分。要么只显示一件,正确显示,要么两件都出现,一件正确且一件不正确。这是我的代码:

var loader = THREE.ColladaLoader();

loader.load('model.dae', function colladaReady(result) {
    var piece = result.scene.children[0];
    piece.position.set(-100, 0, 0);
    scene.add(piece);

    renderer.render(scene, camera);
});

loader.load('model2.dae', function colladaReady2(result2) {
    var piece2 = result2.scene.children[0];
    piece2.position.set(100, 0, 0);
    scene.add(piece2);

    renderer.render(scene, camera);
});

1 个答案:

答案 0 :(得分:0)

原因是因为ColladaLoader不是线程安全的,所以不能对同一个对象进行多次load()调用。只需像这样创建一个新的ColladaLoader实例,所有实例都可以正常工作

var loader = THREE.ColladaLoader();

loader.load('model.dae', function colladaReady(result) {
    var piece = result.scene.children[0];
    piece.position.set(-100, 0, 0);
    scene.add(piece);

    renderer.render(scene, camera);
});

/*** Line added here! ***/
var loader2 = THREE.ColladaLoader();

loader.load('model2.dae', function colladaReady2(result2) {
    var piece2 = result2.scene.children[0];
    piece2.position.set(100, 0, 0);
    scene.add(piece2);

    renderer.render(scene, camera);
});