前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >three.js 源码分析 之 LoadingManager

three.js 源码分析 之 LoadingManager

作者头像
acoolgiser
发布2020-11-03 10:47:44
1.2K0
发布2020-11-03 10:47:44
举报
LoadingManager是一个下载过程中记录、下载完成情况类,当three.js中的一些文件被下载时通过设置LoadingManager可以及时获取当前文件列表中的下载进度
//正在加载的文件管理
     function LoadingManager( onLoad, onProgress, onError ) {
         //设置域
         var scope = this;
         //当前状态为未加载
         var isLoading = false;
 
         var itemsLoaded = 0;
         var itemsTotal = 0;
         var urlModifier = undefined;
        // Refer to #5689 for the reason why we don't set .onStart
         // in the constructor
         //设置回调状态
         this.onStart = undefined;
         this.onLoad = onLoad;
         this.onProgress = onProgress;
         this.onError = onError;
        //单项开始了
         this.itemStart = function ( url ) {
             //下载项总数增加
             itemsTotal ++;
             //如果当前没有下载
             if ( isLoading === false ) {
                 //设置当前开始下载
                 if ( scope.onStart !== undefined ) {
                     //开始下载回调,当前下载的url,当前下载的完的数量,当前下载的总数
                     scope.onStart( url, itemsLoaded, itemsTotal );
                }
            }
             //设置正在下载状态
             isLoading = true;
        };
        //单项结束了
         this.itemEnd = function ( url ) {
             //下载完成,完成数增加
             itemsLoaded ++;
             //设置当前处理完成回调
             if ( scope.onProgress !== undefined ) {
                 //开始下载回调,当前下载的url,当前下载的完的数量,当前下载的总数
                 scope.onProgress( url, itemsLoaded, itemsTotal );
            }
            //总数和下载完成数相同 
             if ( itemsLoaded === itemsTotal ) {
                 //重置下载状态
                 isLoading = false;
                 //回调下载完成回调
                 if ( scope.onLoad !== undefined ) {
 
                     scope.onLoad();
                }
            }
        };
        //单项出现错误了
         this.itemError = function ( url ) {
             //错误回调
             if ( scope.onError !== undefined ) {
                scope.onError( url );
            }
        };
        //设置url解析中间过程
         this.resolveURL = function ( url ) {
            if ( urlModifier ) {
                return urlModifier( url );
            }
            return url;
        };
        //设置url中间转换过程
         this.setURLModifier = function ( transform ) {
            urlModifier = transform;
             return this;
        };
    }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-11-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档