LoadingManager

Обрабатывает и отслеживает загруженные и ожидающие загрузки данные. Глобальный экземпляр этого класса по умолчанию создается и используется загрузчиками, если не задан вручную - см. 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) { // your code goes here });

Помимо наблюдения за ходом выполнения, менеджер 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)); });

Конструктор

LoadingManager(onLoad : Function, onProgress : Function, onError : Function)

Создает новый LoadingManager.

Свойства

.onStart : Function

Эта функция будет вызвана, когда начнется загрузка. Аргументы следующие:

По умолчанию undefined.

.onLoad : Function

Эта функция будет вызвана, когда вся загрузка будет завершена. По умолчанию она не определена, если она не передана в конструкторе.

.onProgress : Function

Эта функция будет вызвана, когда элемент будет завершен. Аргументы следующие:

По умолчанию undefined.

.onError : Function

Эта функция будет вызвана при ошибке любого элемента, с аргументом:

url — URL элемента, в котором произошла ошибка.

По умолчанию undefined.

Методы

.addHandler(regex : Object, loader : Loader) → this

Регистрирует загрузчик с заданным регулярным выражением. Может использоваться для определения того, какой загрузчик должен использоваться для загрузки определенных файлов. Типичный случай использования - перезаписать загрузчик по умолчанию для текстур.

// add handler for TGA textures manager.addHandler(/\.tga$/i, new TGALoader());

.getHandler(file : String) → null

file — путь файла.

Может использоваться для получения зарегистрированного загрузчика для заданного пути к файлу.

.removeHandler(regex : Object) → this

regex — регулярное выражение.

Удаляет загрузчик для заданного регулярного выражения.

.resolveURL(url : String) → String

url — URL для загрузки.

Учитывая URL, использует обратный вызов модификатора URL (если таковой имеется) и возвращает разрешенный URL. Если модификатор URL не задан, возвращается оригинальный URL.

.setURLModifier(callback : Function) → this

callback — обратный вызов модификатора URL. Вызывается с аргументом url , и должен выдавать resolvedURL.

Если указано, то обратный вызов будет передаваться каждому URL ресурса перед отправкой запроса. Обратный вызов может вернуть исходный URL или новый URL, чтобы переопределить поведение загрузки. Это поведение можно использовать для загрузки ассетов из .ZIP-файлов, API перетаскивания и данных URI.

Следующие методы предназначены для внутреннего вызова загрузчиками. Вы не должны вызывать их напрямую.

.itemStart(url : String)

url — URL для загрузки.

Это должно вызываться любым загрузчиком, использующим менеджер, когда загрузчик начинает загрузку url.

.itemEnd(url : String)

url — загруженный url.

Это должно быть вызвано любым загрузчиком, использующим менеджер, когда загрузчик завершил загрузку url.

.itemError(url : String)

url — загруженный url.

Это должно вызываться любым загрузчиком, использующим менеджер, когда загрузчик выдает ошибку при загрузке url.

Исходный файл

О том как получить исходный код этого модуля читайте тут.