cocosCreator 实现加载场景进度

当某个场景的东西太多 通过 各种优化还是 不能达到 切换 特别顺畅的情况下(一般是h5端) 我们可能需要 给玩家一些 假象 或者 使切换场景 “卡得理所当然” ,于是通过 cocoscreator的预加载 增加一个加载场景进度功能 是一个不错的选择呢
在这里插入图片描述

当前版本是cocoscreator 2.4.x

思路:通过预加载的 回调函数 实现 一个进入场景的 进度功能

首先先看一下 preloadScene的实现


preloadScene (sceneName, onProgress, onLoaded) {
        var bundle = cc.assetManager.bundles.find(function (bundle) {
            return bundle.getSceneInfo(sceneName);
        });
        if (bundle) {
            bundle.preloadScene(sceneName, null, onProgress, onLoaded);
        }
        else {
            cc.errorID(1209, sceneName);
            return null;
        }
    },
    

参数列表

sceneName: String 要加载的场景名字

onProgress: Function 回调函数,当加载资源进度变化时调用

completedCount: Number 当前已经加载完的资源数目

totalCount: Number 要加载的总资源数

onLoaded: Function 回调函数, 场景加载完成后调用.

然后我们可以 在进入该场景之前 在onProgress回调中实现 加载进度功能,加载完毕 隐藏相关组件。

代码

TS实现

 joinScene(eventMsg) {
        cc.find("Canvas/di").active = true;
        cc.director.preloadScene("GameScene", this.onProgress.bind(this), ()=>{    
            console.log("加载成功")
            cc.find("Canvas/di").active = false;
            cc.director.loadScene("GameScene");
        })
        
    }
    onProgress(completedCount,totalCount,item){
        //可以把进度数据打出来
        console.log("completedCount",completedCount)
        console.log("totalCount",totalCount)
        
        this.loading.progress = completedCount/totalCount;
        this.loadLabel.string = Math.floor(completedCount/totalCount * 100) + "%";
    }

扫描 / 长按 下图二维码 或者 搜索。亮亮同学TT 关注公众号 获取更多

在这里插入图片描述

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值