12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- import { Widget, _decorator, ProgressBar, math, macro } from 'cc';
- import { UIBase } from '../scriptBase/UIBase';
- import { Bundle } from '../enum/Bundle';
- import { ResMgr } from '../manager/ResMgr';
- import { UI } from '../enum/UI';
- import { Setting } from '../Setting';
- import { ItemMgr } from '../manager/ItemMgr';
- import { AdMgr } from '../manager/AdMgr';
- const { ccclass, property, requireComponent } = _decorator;
- @ccclass('UI/UILoading')
- @requireComponent(Widget)
- export class UILoading extends UIBase {
- private progressBar: ProgressBar = null
- private loaded: boolean = false
- protected async onLoad() {
- this.progressBar = this.getComponentInChildren(ProgressBar)
- }
- protected async start() {
- this.schedule(this.updateProgress, 0.25, macro.REPEAT_FOREVER)
- await this.loadBundle()
- await this.loadRes()
- this.loaded = true
- }
- private init() {
- Setting.init()
- ItemMgr.init()
- AdMgr.init()
- }
- public onOpen(data?: any): void {
- }
- public onClose(data?: any): void {
- }
- private loadBundle() {
- return Promise.all([
- ResMgr.loadBundle(Bundle.Icon),
- ResMgr.loadBundle(Bundle.Audio),
- ResMgr.loadBundle(Bundle.Game),
- ResMgr.loadBundle(Bundle.UI),
- ])
- }
- private loadRes() {
- return Promise.all([
- ResMgr.loadDir(Bundle.Icon),
- ResMgr.loadDir(Bundle.Audio),
- ResMgr.loadDir(Bundle.Game),
- ResMgr.loadDir(Bundle.UI),
- ])
- }
- protected updateProgress(): void {
- let progressAdd: number = math.randomRange(0.1, 0.3)
- this.progressBar.progress = Math.min(this.progressBar.progress + progressAdd, 0.9)
- if (this.loaded) {
- this.progressBar.progress = 1.0
- this.unschedule(this.updateProgress)
- this.onLoadCompleted()
- }
- }
- private onLoadCompleted(): void {
- this.init()
- this.scheduleOnce(() => {
- this.close()
- this.open(UI.Main)
- }, 0.1)
- }
- }
|