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
,添加isAlive
和updateView
方法。
/** 判断是否当前 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.ts
和scripts/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 协议》,转载必须注明作者和本文链接