【cocos creator】【TS】资源加载类,图片置灰

// Learn TypeScript:
//  - https://docs.cocos.com/creator/manual/en/scripting/typescript.html
// Learn Attribute:
//  - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html
// Learn life-cycle callbacks:
//  - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html

const { ccclass, property } = cc._decorator;

@ccclass
export default class resLoadMgr extends cc.Component {
    static instance: resLoadMgr;

    @property(cc.Material)
    private normalSprite: cc.Material = null;   // 正常颜色
    @property(cc.Material)
    private graySprite: cc.Material = null;     // 灰色

    @property(cc.Node)
    private testNode: cc.Node = null;     // 灰色
    onLoad() {
        resLoadMgr.instance = this;
    }

    start() {

    }


    //加载界面
    loadPanel(prefabPath: string, cb: (res: cc.Prefab) => void) {
        cc.loader.loadRes("uiPanel/" + prefabPath, cc.Prefab, (err, res) => {
            if (err) {
                console.error(err);
                return cb(null);
            }
            cb(res);
        });
    }


    // 加载骨骼动画
    loadSkeleton(path: string, cb: (data: sp.SkeletonData) => void) {
        cc.loader.loadRes(path + "/Project", sp.SkeletonData, (err, res) => {
            if (err) {
                console.error(err);
                return cb(null);
            }
            cb(res);
        });
    }

    //加载图片
    loadImg(url, cb: (img: cc.SpriteFrame) => void) {
        cc.loader.loadRes(url, cc.SpriteFrame, (err, sprite) => {
            if (err) {
                //console.error(err);
                return cb(null);
            }
            cb(sprite);
        });
    }

    // 头像
    loadHeadImg(id: number, cb: (img: cc.SpriteFrame) => void) {
        this.loadImg("headImg/" + id, cb);
    }

    //设置图片状态(图片置灰)
    setNodeState(node: cc.Node, isGray: boolean) {
        let mtl = isGray ? this.graySprite : this.normalSprite;
        let render = node.getComponent(cc.Sprite);
        if (render) {
            render.setMaterial(0, mtl);
        }
        for (let one of node.children) {
            this.setNodeState(one, isGray);
        }
    }

    //_____________使用________________
    test() {
        resLoadMgr.instance.loadHeadImg(1, (img) => {
            if (cc.isValid(this)) {
                this.testNode.getComponent(cc.Sprite).spriteFrame = img;
            }
        });
        resLoadMgr.instance.loadSkeleton("jump", (res) => {
            this.testNode.getComponent(sp.Skeleton).skeletonData = res;
        });
        resLoadMgr.instance.loadPanel("panel", (res) => {
            var node = cc.instantiate(res);
            node.parent = cc.Canvas.instance.node;//canvas节点
        });
        resLoadMgr.instance.setNodeState(this.testNode, false);
    }
    // update (dt) {}
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Cocos Creator 2.7 版本中,可以通过 `cc.loader` 模块来加载资源,并使用 `cc.ProgressBar` 组件来创建一个资源加载进度条。具体的实现步骤如下: 1. 创建一个进度条节点 在场景编辑器中创建一个节点,并添加 `cc.ProgressBar` 组件。设进度条的样式、位、大小等属性。 2. 加载资源时更新进度条 使用 `cc.loader` 模块加载资源时,可以使用 `onProgress` 方法监听进度,根据已经加载资源数和总资源数来计算加载进度,并将进度条的百分比设为相应的值。 ``` // 加载资源的过程中 cc.loader.loadResDir("resources", (completedCount, totalCount, item) => { let percent = completedCount / totalCount; progressBar.progress = percent; // 设进度条的百分比 }, (err, assets) => { // 加载完成后的回调 }); ``` 其中,`loadResDir` 方法用于加载资源目录中的所有资源,`completedCount` 表示已经加载资源数,`totalCount` 表示总资源数,`item` 表示当前加载资源信息。`percent` 表示已经加载资源数占总资源数的百分比,`progress` 是 `cc.ProgressBar` 组件的进度属性,将其设为相应的值即可更新进度条。 3. 加载完成时隐藏进度条 当资源加载完成时,可以将进度条节点隐藏起来。 ``` // 资源加载完成后 progressNode.active = false; // 隐藏进度条节点 ``` 这样,你就可以在 Cocos Creator 2.7 中使用 `cc.loader` 模块和 `cc.ProgressBar` 组件来创建一个资源加载进度条了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

烧仙草奶茶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值