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 界面,查看日志输出。

本作品采用《CC 协议》,转载必须注明作者和本文链接