cocos creator从零开发简单框架(27)-核心Wait

wait.png放到项目res/texture/core目录下。

场景创建Sprite (单色)组件并重命名为Wait,大小 设置为 750 x 1334,颜色 设置为 黑色,透明度Opacity 设置为 160。

拖动wait.pngWait节点下,然后把 Wait节点拖动到resources/core目录下并从场景删除。

创建Wait

新建scripts/core/Wait.ts,内容如下。

import AppConstants from "../../framework/scripts/AppConstants"
import AppUtil from "../../framework/scripts/AppUtil"
import ResMgr from "../../framework/scripts/manager/ResMgr"
import LayerMgr from "../../framework/scripts/view/LayerMgr"


export default class Wait {
    private static _prefab: cc.Prefab
    private static _view: cc.Node


    public static async init() {
        if (this._prefab) return true

        const [prefab, err] = await AppUtil.asyncWrap<cc.Prefab>(ResMgr.loadRes('core/Wait'))
        if (err) {
            console.error(`Wait.init 找不到资源 [core/Wait] error:${err}`)
            return false
        }

        this._prefab = prefab

        return true
    }

    public static show() {
        this.action(true)
    }

    public static hide() {
        this.action(false)
    }


    private static action(flag: boolean) {
        if (!this._view || !this._view.isValid) {
            this._view = cc.instantiate(this._prefab)

            // 挂载 Widget 组件, 保持跟 Canvas 一样大小
            AppUtil.setWidget(this._view)
            // 拦截所有事件
            this._view.addComponent(cc.BlockInputEvents)

            const wait = this._view.getChildByName('wait')
            cc.tween(wait).repeatForever(cc.tween().to(0.75, { angle: -360 }).call(() => wait.angle = 0)).start()
        }

        LayerMgr.setLayer(this._view, AppConstants.viewLayer.Top)

        this._view.active = flag
    }
}

编辑scripts/core/Core.ts,修改init方法调用Wait的初始化。

public static async init() {
    if (!await Tip.init()) return
    if (!await Wait.init()) return

    EventMgr.emit(GameConstants.event.CoreLoadOk)
}

编辑UIMain界面,创建一个名为BtnWait文本为Wait的按钮。

编辑scripts/UIMain.tsonButtonClick方法添加如下代码。

case 'BtnTip':
    Tip.show('哈哈哈哈哈哈哈哈哈哈')
    break
case 'BtnWait':
    Wait.show()
    TimerMgr.inst.add(3000, () => Wait.hide())
    break

运行程序,点击Wait按钮,正确情况下会弹出Wait窗口了。

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!