123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- /** @format */
- import {UI} from '../enums/UI'
- import {BaseUI} from './BaseUI'
- import {Data, Mgr} from '../GameControl'
- import {ccUtils} from '../utils/ccUtils'
- import {observer, render, node, label, editBox, list} from '../mobx/observer'
- import {msgCmd} from '../proto/msg_cmd'
- import {ConstValue} from '../data/ConstValue'
- const {ccclass, property} = cc._decorator
- @ccclass
- @observer
- export class GameLoadingUI extends BaseUI {
- @node('left')
- left: cc.Node
- @node('right')
- right: cc.Node
- @node('pb')
- pb: cc.Node
- pbCurNum: number = 0
- pbAllNum: number = 0
- onShow(args, fromUI: number) {
- this.closeDoor()
- this.scheduleOnce(() => {
- this.pb.active = true
- this.pbCurNum = 0
- this.pbAllNum = 1 + (Data.game.gameAssetMap.size > 0 ? 0 : 1)
- ccUtils.setProgress(0, this.pb)
- console.log(Date.now())
- if (Data.game.gameAssetMap.size > 0) {
- this.openDoor()
- } else {
- this.loadAllRes().then(res => {
- console.log(Date.now())
- this.openDoor()
- })
- }
- }, 0.6)
- }
- onHide(): any {
- this.pb.active = false
- this.unscheduleAllCallbacks()
- }
- update(dt) {
- if (this.pb.active && this.pbCurNum < this.pbAllNum) {
- this.pbCurNum += dt
- ccUtils.setProgress(this.pbCurNum / this.pbAllNum, this.pb)
- }
- }
- closeDoor() {
- //关门动画
- this.left.stopAllActions()
- this.right.stopAllActions()
- this.left.x = -ConstValue.CANVAS_WIDTH / 2
- this.right.x = ConstValue.CANVAS_WIDTH / 2
- let t = cc.tween
- t(this.left)
- .then(t().to(0.5, {x: 0}))
- .start()
- t(this.right)
- .then(t().to(0.5, {x: 0}))
- .start()
- }
- openDoor() {
- Mgr.ui.closeAll([UI.GameLoadingUI])
- Mgr.ui.show(UI.ZumaUI)
- //开门动画
- let t = cc.tween
- t(this.left)
- .then(
- t()
- .delay(1)
- .call(() => {
- this.pb.active = false
- })
- .to(0.5, {x: -ConstValue.CANVAS_WIDTH / 2})
- .call(() => {
- this.hide()
- })
- .union(),
- )
- .start()
- t(this.right)
- .then(
- t()
- .delay(1)
- .to(0.5, {x: ConstValue.CANVAS_WIDTH / 2})
- .union(),
- )
- .start()
- }
- loadAllRes() {
- let records = Data.game.gameBundle.getDirWithPath('')
- let tempMap = new Map()
- for (let i = 0; i < records.length; i++) {
- let record = records[i]
- let type
- let path = record.path
- if (path.includes('prefab')) {
- type = cc.Prefab
- } else if (path.includes('animation')) {
- type = cc.AnimationClip
- } else if (path.includes('atlas')) {
- type = cc.SpriteAtlas
- } else if (path.includes('texture')) {
- type = cc.SpriteFrame
- }
- if (type == record.ctor) tempMap.set(record.path, record)
- }
- let loadPromises = []
- tempMap.forEach((record, path) => {
- loadPromises.push(this.loadGameRes(path, record.ctor))
- })
- return Promise.all(loadPromises)
- }
- loadGameRes(url: string, type: typeof cc.Asset) {
- return new Promise((resolve, reject) => {
- Data.game.gameBundle.load(url, type, (error, assets: cc.Asset) => {
- if (error) {
- reject(error)
- } else {
- Data.game.gameAssetMap.set(url, assets)
- resolve(assets)
- }
- })
- })
- }
- //UI或者其他函数=======================================
- //网络事件=======================================
- // onXXXRsp() {}
- //触发事件=======================================
- // @render
- // showRender() {}
- // 点击事件=======================================
- // onClick() {}
- }
|