与大家分享一下对服务器资源的加载监听

今天看到一个同事写的计时器进度条我人都傻了,作为一名新手菜鸟程序,我与大家分享一下我的进度条监听,当然我的方法比较简单暴力哈哈哈,下面是代码,欢迎各位大佬指正

/*

  • 脚本放在/Script下就可以无需挂载,无需require

  • 为了和本来的cc.loader.load保持一致

  • 加载的远程资源直接使用Loader.load(url,function);

  • 进度加载使用Loader.getProgress(),此方法返回一个x,x为当前加载成功文件数和文件总数的比值

  • 进度条的变化请放在update()或者自己写的帧检测函数里面保证条进度的流畅性

*/

let loadertype = cc.Class({

extends: cc.Component,

properties: {

    minIndex:0,

    maxIndex:0,

},

/**

* 需要添加初始化参数的在这里写

* ctor(){

  },

*/



/**

 * @param {加载链接 string||array||object} url 

 * @param {完成回调函数} onComplete 

 */

load(url,onComplete){

    if(typeof onComplete !='function' || (typeof url !='string' && typeof url != 'object')){

        if(typeof onComplete !='function')

            throw new Error("Loader.load调用出错 \n 第二个参数必须是函数");  

        else

            throw new Error("Loader.load调用出错 \n 第二个参数必须是字符||对象||数组");  

    }else{

        if(typeof url =='object' && url.type == null ){

            for(let urlchildren of url){

                Loader.maxIndex++;

                cc.loader.load(urlchildren,function(err,data){

                    onComplete(err,data);

                    Loader.minIndex++;

                });

            }

        }else{

            Loader.maxIndex++;

            cc.loader.load(url,function(err,data){

                onComplete(err,data);

                Loader.minIndex++;

            });

        }

    }

   

},

/**

 * @param {加载完成文件数} completedCount 

 * @param {总文件数} totalCount 

 * @returns 返回区间[0,1]

 */

getProgress(completedCount = Loader.minIndex ,totalCount = Loader.maxIndex){

    return completedCount / totalCount;

}

});

// 加载用法示例,可自行删除

// url字符链接

// Loader.load(“h.png”,(err,typedata)=>{

// let data = typedata

// })

// [url]链接数组

// Loader.load([“h.png”,“t.mp3”],(err,typedata)=>{

// let data = typedata

// })

// {url}链接对象

// Loader.load({ url1:“h.png”,url2:“t.mp3”},(err,typedata)=>{

// let data = typedata

// })

// 进度监听用法示例,可自行删除

// update (dt) {

// if(Loader.getProgress()<1){

// cc.slider.progress = Loader.getProgress();

// }else{

// cc.slider.progress = 1;

// this.complete();

// }

// },

let loader = new loadertype();

window[‘Loader’] = loader;