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) { // });

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

onLoad — (опционально) эта функция будет вызвана, когда все загрузчики закончат работу.
onProgress — (опционально) эта функция будет вызвана, когда элемент будет завершен.
onError — (опционально) эта функция будет вызвана, если загрузчик столкнется с ошибками.
Создает новый LoadingManager.

Свойства

.onStart : Function

Эта функция будет вызвана, когда начнется загрузка. Аргументы следующие:
url — URL только что загруженного элемента.
itemsLoaded — количество уже загруженных элементов на данный момент.
itemsTotal — общее количество загружаемых элементов.

По умолчанию эти значения не определены.

.onLoad : Function

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

.onProgress : Function

Эта функция будет вызвана, когда элемент будет завершен. Аргументы следующие:
url — URL только что загруженного элемента.
itemsLoaded — количество уже загруженных элементов на данный момент.
itemsTotal — общее количество загружаемых элементов.

По умолчанию эти значения не определены.

.onError : Function

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

По умолчанию эти значения не определены.

Методы

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

regex — Регулярное выражение.
loader — Загрузчик.

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

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

.getHandler(file : String) → null

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

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

.removeHandler(regex : Object) → LoadingManager

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

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

.resolveURL(url : String) → String

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

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

.setURLModifier(callback : Function) → null

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

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


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

.itemStart(url : String) → null

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

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

.itemEnd(url : String) → null

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

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

.itemError(url : String) → null

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

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

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

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