JSRUN 用代码说话

LoadingManager

编辑教程

LoadingManager

其功能时处理并跟踪已加载和待处理的数据。如果未手动设置加强管理器,则会为加载器创建和使用默认全局实例加载器管理器 - 请参阅 DefaultLoadingManager.

一般来说,默认的加载管理器已足够使用了,但有时候也需要设置单独的加载器 - 例如,如果你想为对象和纹理显示单独的加载条。

下面的例子将介绍,如何使用加载管理器来跟踪 OBJLoader 的加载进度流程。

var manager = new THREE.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 );

};

var loader = new THREE.OBJLoader( manager );
loader.load( 'file.obj', function ( object ) {

    //

} );

除了观察进度流程之外,还可以使用LoadingManager在加载期间覆写资源URL。当某资源来自拖拽事件、 WebSockets、WebRTC或其他API时,此方法可以有所帮助。下面显示了如何使用Blob URL加载内存模型的示例。

// 将文件拖入网页时创建的Blob或File对象。
var blobs = {'fish.gltf': blob1, 'diffuse.png': blob2, 'normal.png': blob3};

var manager = new THREE.LoadingManager();

// 使用URL回调初始化加载管理器。
var objectURLs = [];
manager.setURLModifier( ( url ) => {

    url = URL.createObjectURL( blobs[ url ] );

    objectURLs.push( url );

    return url;

} );

// 像通常一样加载,然后撤消blob URL
var loader = new THREE.GLTFLoader( manager );
loader.load( 'fish.gltf', (gltf) => {

    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

默认情况下,此方法时未定义的,除非在构造函数中进行传递。

JSRUN闪电教程系统是国内最先开创的教程维护系统, 所有工程师都可以参与共同维护的闪电教程,让知识的积累变得统一完整、自成体系。 大家可以一起参与进共编,让零散的知识点帮助更多的人。
X
支付宝
9.99
无法付款,请点击这里
金额: 0
备注:
转账时请填写正确的金额和备注信息,到账由人工处理,可能需要较长时间
如有疑问请联系QQ:565830900
正在生成二维码, 此过程可能需要15秒钟