cocos creator从零开发简单框架(10)-UI更新

UI打开后,别的地方数据更新了可能要通知UI同时更新,这时需要有更新UI的接口。

编辑framework/scripts/AppUtil.ts,添加getClassName方法获取View类名。

public static getClassName(viewCls: any): string {
    return (new viewCls() as ViewBase).getClassName()
}

编辑framework/scripts/view/UIMgr.ts,添加isAliveupdateView方法。

/** 判断是否当前 UI */
public static isAlive(uiCls: any): boolean {
    const viewName = AppUtil.getClassName(uiCls)

    return this._current != null && viewName == this._current.uiName
}

/** 更新 UI */
public static updateView(uiCls: any, ...args: any[]): boolean {
    if (!this.isAlive(uiCls)) return false

    this._current.updateView(args)

    return true
}

编辑scripts/UIMain.tsscripts/UIBag.ts,重载onUpdateView方法。

protected onUpdateView(args: any[]): void {
    cc.log('args:', args)
}

编辑scripts/Main.ts,修改onLoad方法。

protected onLoad(): void {
    App.init()

    UIMgr.open(UIMain)

	// 5 秒后调用
	this.scheduleOnce(() =>  {
        if (!UIMgr.updateView(UIMain, '血量-10', '体力-5')) {
            cc.error('更新 UIMain 失败')
        }
    }, 5)

	// 10 秒后调用
	this.scheduleOnce(() =>  {
        if (!UIMgr.updateView(UIBag, '血量+10', '金币-10')) {
            cc.error('更新 UIBag 失败')
        }
    }, 10)
}

运行程序,在合适的时机切换Bag界面,查看日志输出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值