cocos creator从零开发简单框架(26)-核心Tip

场景创建Sprite (单色)组件并重命名为Tip,Size H 设置为 100,颜色 设置为 黑色,透明度Opacity 设置为 160,挂载Widget组件。

创建Tip

Tip属性

Tip节点下创建Label (文本)组件并重命名为lblTip,然后把 Tip节点拖动到resources/core目录下并从场景删除。

创建lblTip

新建scripts/core/Tip.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 Tip {
    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/Tip'))
        if (err) {
            console.error(`Tip.init 找不到资源 [core/Tip] error:${err}`)
            return false
        }

        this._prefab = prefab

        return true
    }

    public static show(content: string) {
        if (!this._view || !this._view.isValid) {
            this._view = cc.instantiate(this._prefab)
            this._view.opacity = 0

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

        this._view.getChildByName('lblTip').getComponent(cc.Label).string = content

        this._view.y = 0
        this._view.stopAllActions()

        cc.tween(this._view).
            show().
            to(0.2, { opacity: 255 }).
            delay(2).
            to(0.5, { opacity: 0, y: 100 }).
            hide().
            start()
    }
}

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

export default class GameConstants {
    public static readonly event = {
        CoreLoadOk: 'CoreLoadOk',
    }
}

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

import EventMgr from "../../framework/scripts/manager/EventMgr"
import GameConstants from "../GameConstants"
import Tip from "./Tip"


export default class Core {
    public static async init() {
        if (!await Tip.init()) return

        EventMgr.emit(GameConstants.event.CoreLoadOk)
    }
}

编辑scripts/Main.ts,修改onLoad方法,添加核心组件初始化代码。

protected onLoad(): void {
    App.init()

    Core.init()

    UIMgr.open(UIMain)
}

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

Tip按钮

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

case 'BtnPanelGreen':
    PanelMgr.show(PanelGreen)
    break

case 'BtnTip':
    Tip.show('哈哈哈哈哈哈哈哈哈哈')
    break

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

因为都是黑色背景所以效果不明显,可以在PanelYellow.ts脚本关闭按钮调用Tip.show('哈哈哈哈哈哈哈哈哈哈')

这里有了Tip脚本还单独添加一个Core脚本来初始化,并在初始化完成后发送了CoreLoadOk事件,这是因为程序在初始化的时候要确认核心的资源都是加载成功的。

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

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