mirror of
https://github.com/Gongxh0901/kunpolibrary
synced 2025-08-05 06:48:42 +00:00
126 lines
3.9 KiB
TypeScript
126 lines
3.9 KiB
TypeScript
|
import { cc, fgui, kunpo } from '../../../header';
|
||
|
const { uiclass, uiprop, uiclick } = kunpo._uidecorator;
|
||
|
|
||
|
interface WindowData {
|
||
|
content: string;
|
||
|
title?: string;
|
||
|
okTitle?: string;
|
||
|
cancelTitle?: string;
|
||
|
showClose?: boolean; // 显示关闭按钮
|
||
|
emptyAreaClose?: boolean; // 点击空白区域关闭
|
||
|
align?: cc.HorizontalTextAlignment; // 内容文本水平对齐方式 default:居中对齐
|
||
|
leading?: number;//行距
|
||
|
okNotClose?: boolean; // 点击OK按钮时不关闭本界面
|
||
|
cancelNotClose?: boolean; // 点击取消按钮时不关闭本界面
|
||
|
complete?: () => void; // 确定按钮的回调
|
||
|
cancel?: () => void; // 取消按钮的回调
|
||
|
close?: () => void; // 关闭界面的回调 (只有点击关闭按钮和空白位置关闭时才会触发)
|
||
|
}
|
||
|
|
||
|
|
||
|
@uiclass("Window", "Basics", "AlertWindow")
|
||
|
export class AlertWindow extends kunpo.Window {
|
||
|
@uiprop private bg: fgui.GLoader;
|
||
|
@uiprop private lab_title: fgui.GTextField;
|
||
|
@uiprop private lab_content: fgui.GTextField;
|
||
|
@uiprop private btn_close: fgui.GButton;
|
||
|
@uiprop private btn_ok: fgui.GButton;
|
||
|
@uiprop private btn_cancel: fgui.GButton;
|
||
|
|
||
|
private _isEmptyAreaClose: boolean = false;
|
||
|
private _window_data: WindowData = null;
|
||
|
|
||
|
private _complete: () => void;
|
||
|
private _cancel: () => void;
|
||
|
private _closeFunc: () => void;
|
||
|
|
||
|
protected onInit(): void {
|
||
|
this.adapterType = kunpo.AdapterType.Full;
|
||
|
this.type = kunpo.WindowType.Normal;
|
||
|
}
|
||
|
|
||
|
protected onAdapted() {
|
||
|
}
|
||
|
|
||
|
protected onShow(data: WindowData): void {
|
||
|
this._complete = data.complete;
|
||
|
this._cancel = data.cancel;
|
||
|
this._closeFunc = data.close;
|
||
|
this._window_data = data;
|
||
|
|
||
|
// 标题
|
||
|
if (data.title) {
|
||
|
this.lab_title.text = data.title;
|
||
|
} else {
|
||
|
this.lab_title.visible = false;
|
||
|
}
|
||
|
|
||
|
// 关闭按钮
|
||
|
this.btn_close.visible = !!data.showClose;
|
||
|
|
||
|
// 空白位置关闭标记
|
||
|
this._isEmptyAreaClose = !!data.emptyAreaClose;
|
||
|
|
||
|
// 确定按钮
|
||
|
if (data.okTitle) {
|
||
|
this.btn_ok.title = data.okTitle;
|
||
|
} else {
|
||
|
this.btn_ok.visible = false;
|
||
|
}
|
||
|
|
||
|
// 取消按钮
|
||
|
if (data.cancelTitle) {
|
||
|
this.btn_cancel.text = data.cancelTitle;
|
||
|
} else {
|
||
|
this.btn_cancel.visible = false;
|
||
|
}
|
||
|
|
||
|
this.lab_content.text = data.content;
|
||
|
let align = typeof data.align == "number" ? data.align : cc.Label.HorizontalAlign.CENTER;
|
||
|
let leading = typeof data.leading == "number" ? data.leading : this.lab_content.leading;
|
||
|
this.lab_content.align = align;
|
||
|
this.lab_content.leading = leading;
|
||
|
this.lab_content.ensureSizeCorrect();
|
||
|
|
||
|
// 限制背景框高度
|
||
|
if (this.bg.height < 500) {
|
||
|
this.bg.height = 500;
|
||
|
}
|
||
|
|
||
|
// 确定取消按钮位置调整
|
||
|
if (this.btn_ok.visible && !this.btn_cancel.visible) {
|
||
|
this.btn_ok.x = this.bg.x + (this.bg.width - this.btn_ok.width) * 0.5;
|
||
|
} else if (this.btn_cancel.visible && !this.btn_ok.visible) {
|
||
|
this.btn_cancel.x = this.bg.x + (this.bg.width - this.btn_cancel.width) * 0.5;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
protected onClose(): void {
|
||
|
|
||
|
}
|
||
|
|
||
|
protected onEmptyAreaClick(): void {
|
||
|
if (this._isEmptyAreaClose) {
|
||
|
kunpo.WindowManager.closeWindow(this.name);
|
||
|
this._closeFunc && this._closeFunc();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@uiclick
|
||
|
private onClickBtnClose(): void {
|
||
|
kunpo.WindowManager.closeWindow(this.name);
|
||
|
this._closeFunc && this._closeFunc();
|
||
|
}
|
||
|
|
||
|
@uiclick
|
||
|
private onClickBtnOk(): void {
|
||
|
!this._window_data.okNotClose && kunpo.WindowManager.closeWindow(this.name);
|
||
|
this._complete && this._complete();
|
||
|
}
|
||
|
|
||
|
@uiclick
|
||
|
private onClickBtnCancel(): void {
|
||
|
!this._window_data.cancelNotClose && kunpo.WindowManager.closeWindow(this.name);
|
||
|
this._cancel && this._cancel();
|
||
|
}
|
||
|
}
|