Обрабатывает и отслеживает загруженные и ожидающие загрузки данные. Глобальный экземпляр этого класса по умолчанию создается и используется загрузчиками, если не задан вручную - см. DefaultLoadingManager.
В общем, этого должно быть достаточно, однако бывают случаи, когда полезно иметь отдельные загрузчики - например, если вы хотите показать отдельные полосы загрузки для объектов и текстур.
В этом примере показано, как использовать LoadingManager для отслеживания хода выполнения процесса OBJLoader.
const manager = new v3d.LoadingManager();
manager.onStart = function(url, itemsLoaded, itemsTotal) {
console.log('Started loading file: ' + url + '.\nLoaded ' + itemsLoaded + ' of ' + itemsTotal + ' files.');
};
manager.onLoad = function() {
console.log('Loading complete!');
};
manager.onProgress = function(url, itemsLoaded, itemsTotal) {
console.log('Loading file: ' + url + '.\nLoaded ' + itemsLoaded + ' of ' + itemsTotal + ' files.');
};
manager.onError = function(url) {
console.log('There was an error loading ' + url);
};
const loader = new v3d.OBJLoader(manager);
loader.load('file.obj', function(object) {
//
});
Помимо наблюдения за ходом выполнения, менеджер LoadingManager можно использовать для переопределения URL-адресов ресурсов во время загрузки. Это может быть полезно для ассетов, поступающих из событий drag-and-drop, WebSockets, WebRTC или других API. Ниже приведен пример загрузки модели in-memory с использованием URL-адресов Blob.
// Blob or File objects created when dragging files into the webpage.
const blobs = {'fish.gltf': blob1, 'diffuse.png': blob2, 'normal.png': blob3};
const manager = new v3d.LoadingManager();
// Initialize loading manager with URL callback.
const objectURLs = [];
manager.setURLModifier((url) => {
url = URL.createObjectURL(blobs[url]);
objectURLs.push(url);
return url;
});
// Load as usual, then revoke the blob URLs.
const loader = new v3d.GLTFLoader(manager);
loader.load('fish.gltf', (gltf) => {
app.scene.add(gltf.scene);
objectURLs.forEach((url) => URL.revokeObjectURL(url));
});
onLoad — (опционально) эта функция будет вызвана, когда все загрузчики закончат работу.
onProgress — (опционально) эта функция будет вызвана, когда элемент будет завершен.
onError — (опционально) эта функция будет вызвана, если загрузчик столкнется с ошибками.
Создает новый LoadingManager.
Эта функция будет вызвана, когда начнется загрузка.
Аргументы следующие:
url — URL только что загруженного элемента.
itemsLoaded — количество уже загруженных элементов на данный момент.
itemsTotal — общее количество загружаемых элементов.
По умолчанию эти значения не определены.
Эта функция будет вызвана, когда вся загрузка будет завершена. По умолчанию она не определена, если она не передана в конструкторе.
Эта функция будет вызвана, когда элемент будет завершен.
Аргументы следующие:
url — URL только что загруженного элемента.
itemsLoaded — количество уже загруженных элементов на данный момент.
itemsTotal — общее количество загружаемых элементов.
По умолчанию эти значения не определены.
Эта функция будет вызвана при ошибке любого элемента, с аргументом:
url — URL элемента, в котором произошла ошибка.
По умолчанию эти значения не определены.
regex — Регулярное выражение.
loader — Загрузчик.
Регистрирует загрузчик с заданным регулярным выражением. Может использоваться для определения того, какой загрузчик должен использоваться для загрузки определенных файлов. Типичный случай использования - перезаписать загрузчик по умолчанию для текстур.
// add handler for TGA textures
manager.addHandler(/\.tga$/i, new TGALoader());
file — Путь файла.
Может использоваться для получения зарегистрированного загрузчика для заданного пути к файлу.
regex — Регулярное выражение.
Удаляет загрузчик для заданного регулярного выражения.
url — URL для загрузки
Учитывая URL, использует обратный вызов модификатора URL (если таковой имеется) и возвращает разрешенный URL. Если модификатор URL не задан, возвращается оригинальный URL.
callback — Обратный вызов модификатора URL. Вызывается с аргументом url , и должен выдавать resolvedURL.
Если указано, то обратный вызов будет передаваться каждому URL ресурса перед отправкой запроса. Обратный вызов может вернуть исходный URL или новый URL, чтобы переопределить поведение загрузки. Это поведение можно использовать для загрузки ассетов из .ZIP-файлов, API перетаскивания и данных URI.
Примечание: Следующие методы предназначены для внутреннего вызова загрузчиками. Вы не должны вызывать их напрямую.
url — URL для загрузки
Это должно вызываться любым загрузчиком, использующим менеджер, когда загрузчик начинает загрузку url.
url — загруженный url
Это должно быть вызвано любым загрузчиком, использующим менеджер, когда загрузчик завершил загрузку url.
url — загруженный url
Это должно вызываться любым загрузчиком, использующим менеджер, когда загрузчик выдает ошибку при загрузке url.
О том как получить исходный код этого модуля читайте тут.