three.js 源码分析 之 LoadingManager

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;

        };

    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值