You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
2.4 KiB
82 lines
2.4 KiB
|
|
//*********************
|
|
// create by 流云
|
|
// time: Wed Apr 08 2026
|
|
// desc:
|
|
//*********************
|
|
import { _decorator, Component, Node, find, Vec3, tween, v3, Tween } from 'cc';
|
|
import { Auto_PopUnLockBtn } from './Auto_PopUnLockBtn';
|
|
import { GEvent } from 'db://assets/mx/module/event/GEvent';
|
|
import { NewFunType } from '../../newFun/NewFun';
|
|
const { ccclass, property } = _decorator;
|
|
|
|
@ccclass('UIPopUnLockBtn')
|
|
export class UIPopUnLockBtn extends Auto_PopUnLockBtn {
|
|
|
|
onLoad(): void {
|
|
super.onLoad();
|
|
}
|
|
|
|
onEnable(): void {
|
|
super.onEnable();
|
|
}
|
|
|
|
onDisable(): void {
|
|
super.onDisable();
|
|
}
|
|
|
|
onInit(): void {
|
|
this.showOpenCenterEff();
|
|
this.showOpenMaskEff(2);
|
|
this.id = this.prema;
|
|
gg.newFun.setUnLockNewFun(NewFunType.MainPageTab, this.prema);
|
|
this.updateUI();
|
|
}
|
|
|
|
id: number = 0;
|
|
|
|
/** 避免遮罩点击与动画结束各调一次 close,或与 close 动画叠加重绘空引用(MultiTextures / updateUVs) */
|
|
private _closing = false;
|
|
|
|
private finishCloseThenRefreshMainUI(): void {
|
|
if (this._closing) return;
|
|
this._closing = true;
|
|
void this.close(2).then(() => {
|
|
GEvent.Ins.emit(GEvent.UpdateMainUI);
|
|
});
|
|
}
|
|
|
|
/** 与常见弹窗一致:点遮罩关闭;先停掉按钮 tween,避免销毁后回调再触逻辑 */
|
|
click_bgMask(): void {
|
|
for (const c of this.ui_btns.children) {
|
|
Tween.stopAllByTarget(c);
|
|
}
|
|
this.ui_light.active = false;
|
|
const btn = this.ui_btns.getChildByName('' + this.id);
|
|
if (btn?.isValid) btn.active = false;
|
|
this.finishCloseThenRefreshMainUI();
|
|
}
|
|
|
|
updateUI(): void {
|
|
this.ui_btns.children.map(c => c.active = false);
|
|
let btn = this.ui_btns.getChildByName('' + this.id);
|
|
if (btn) {
|
|
btn.active = true;
|
|
let targetPos = btn.position.clone();
|
|
btn.position = v3(0, 0, 0);
|
|
tween(btn)
|
|
.delay(2)
|
|
.call(() => {
|
|
this.ui_light.active = false;
|
|
})
|
|
.to(1, { position: targetPos })
|
|
.call(() => {
|
|
btn.active = false;
|
|
this.finishCloseThenRefreshMainUI();
|
|
})
|
|
.start();
|
|
} else {
|
|
this.finishCloseThenRefreshMainUI();
|
|
}
|
|
}
|
|
}
|
|
|