В THREE.js, если у меня есть несколько вызовов JSONLoader для загрузки нескольких объектов, подобных этому (упрощенный пример):
function init() {
var loader = new THREE.JSONLoader();
loader.load("mesh1.js", createScene);
loader.load("mesh2.js", createScene);
}
function createScene( geometry ) {
if (geometry.filename == "mesh1.js") {
mesh1 = new THREE.Mesh( geometry, material );
scene.add( mesh1 );
} else if (geometry.filename == "mesh2.js") {
mesh2 = new THREE.Mesh( geometry, material );
scene.add( mesh2 );
}
}
Как я могу определить, какая сетка была возвращена при обратном вызове, особенно если они часто приходят не по порядку?
Я пытаюсь обработать несколько возвращенных сеток с помощью одной универсальной функции обратного вызова. Есть ли какое-то свойство в возвращенной геометрии, указывающее исходное имя файла, с которым я могу протестировать?
Или, может быть, есть более элегантный способ? Возможно, создание нового объекта THREE.JSONLoader для каждого вызова помогло бы функции обратного вызова определить, какой меш прибыл?
Я ценю любую помощь/идеи! Спасибо!
meshloader("mesh1.js")
передается в качестве аргумента, он выполняется напрямую (из-за наличия круглых скобок). При выполнении возвращает другую функцию. Так что это точно так же, как если бы вы передали анонимную функциюfunction(geometry){...}
в качестве аргумента, за исключением того, что эта анонимная функция будет выполняться как обратный вызов в контексте, где переменнаяfileName
определена и имеет значение"mesh1.js"
. 23.03.2013