场景创建Sprite (单色)
组件并重命名为Tip
,Size H 设置为 100,颜色 设置为 黑色,透明度Opacity 设置为 160,挂载Widget
组件。
Tip
节点下创建Label (文本)
组件并重命名为lblTip
,然后把 Tip
节点拖动到resources/core
目录下并从场景删除。
新建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
的按钮。
编辑scripts/UIMain.ts
, onButtonClick
方法添加如下代码。
case 'BtnPanelGreen':
PanelMgr.show(PanelGreen)
break
case 'BtnTip':
Tip.show('哈哈哈哈哈哈哈哈哈哈')
break
运行程序,点击Tip
按钮,正确情况下会弹出Tip
窗口了。
因为都是黑色背景所以效果不明显,可以在
PanelYellow.ts
脚本关闭按钮调用Tip.show('哈哈哈哈哈哈哈哈哈哈')
这里有了
Tip
脚本还单独添加一个Core
脚本来初始化,并在初始化完成后发送了CoreLoadOk
事件,这是因为程序在初始化的时候要确认核心的资源都是加载成功的。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。