cocos creator 场景加载工具类 GSceneUtil

cocos creator 场景加载工具类 GSceneUtil

一个加载场景的管理类

  • addPersistRootNode(node: cc.Node) // 设置常驻结点

  • removePersistRootNode(node: cc.Node) // 删除常驻结点

  • loadSceneNormal(sceneName: string, cb?: Function) // 普通加载场景

  • loadSceneWithProgress(sceneName: string, cb?: Function)// 带进度条加载场景

  • setLoadingDisplay() // 设置加载动画

  • setResolutionPolicy()// 设置屏幕大小

import loading from "./loading"
class GSceneUtil {
    public static readonly Instance = new GSceneUtil();
    private rootNode: cc.Node = null;

    constructor() {

    }

    public addPersistRootNode(node: cc.Node) {
        if(cc.game.isPersistRootNode(node)) {
            return ;
        }
        cc.game.addPersistRootNode(node);
        this.rootNode = node;
    }
    public removePersistRootNode(node: cc.Node) {
        if(cc.game.isPersistRootNode(node)) {
            cc.game.removePersistRootNode(node);
        }
    }

    public loadSceneNormal(sceneName: string, cb?: Function) {
        cc.director.loadScene(sceneName, cb);
    }
    public loadSceneWithProgress(sceneName: string, cb?: Function) {
        this.doLoadSceneWithProgress(sceneName, cb);
    }


    private setLoadingDisplay() {
        if(this.rootNode == null) return ;
        this.rootNode.getComponent(loading).onShow();

        (cc.loader as any).onProgress = (completedCount, totalCount, item) => {
            let percent = 100 * completedCount / totalCount;
            let str = percent.toFixed(2) + '%';
            this.rootNode.getComponent(loading).onChangeScene(str);
        };

        cc.director.once(cc.Director.EVENT_AFTER_SCENE_LAUNCH, () => {
            this.rootNode.getComponent(loading).onHide();
        });
    }

    private doLoadSceneWithProgress(sceneName: string, cb?: Function) {
        this.setLoadingDisplay();
        cc.director.preloadScene(sceneName, () => {
            cc.director.loadScene(sceneName, cb);
        });
    }

    public setResolutionPolicy() {
        let f = function () {
            cc.log('手机场景适配');
            cc.view.setDesignResolutionSize(640, 1280, cc.ResolutionPolicy.FIXED_WIDTH);
            cc.Canvas.instance['alignWithScreen']();
            /* if (cc.sys.isMobile) {
                cc.log('手机场景适配');
                cc.view.setDesignResolutionSize(640, 1280, cc.ResolutionPolicy.FIXED_WIDTH);
                cc.Canvas.instance['alignWithScreen']();
            } else {
                cc.log('电脑场景适配');
                cc.view.setDesignResolutionSize(640, 1280, cc.ResolutionPolicy.SHOW_ALL);
                cc.Canvas.instance['alignWithScreen']();
            } */
        }
        f();
        cc.director.on(cc.Director.EVENT_BEFORE_SCENE_LOADING, f);
    }
}

export default GSceneUtil.Instance;

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值