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 协议》,转载必须注明作者和本文链接
关于 LearnKu
推荐文章: