将wait.png
放到项目res/texture/core
目录下。
场景创建Sprite (单色)
组件并重命名为Wait
,大小 设置为 750 x 1334,颜色 设置为 黑色,透明度Opacity 设置为 160。
拖动wait.png
到Wait
节点下,然后把 Wait
节点拖动到resources/core
目录下并从场景删除。
新建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.ts
, onButtonClick
方法添加如下代码。
case 'BtnTip':
Tip.show('哈哈哈哈哈哈哈哈哈哈')
break
case 'BtnWait':
Wait.show()
TimerMgr.inst.add(3000, () => Wait.hide())
break
运行程序,点击Wait
按钮,正确情况下会弹出Wait
窗口了。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。