UIAlert.ts 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import { GameUILayers, gui, ui_base } from "../../core/ui/ui";
  2. import get_new_wait from "../../core/util_class/Wait";
  3. import { ModuleDef } from "../../scripts/ModuleDef";
  4. import { Layout_UIAlert } from "./Layout_UIAlert";
  5. export class UIAlert extends ui_base {
  6. constructor() {
  7. super(ModuleDef.BASIC,'ui_alert/UI_Alert', GameUILayers.ALERT, Layout_UIAlert);
  8. }
  9. /**
  10. * 显示一个选择提示
  11. * @param options title?:string 标题,content?:string内容,ok?:string 确认字,cancel?:string 取消字,show?:boolean是否显示取消
  12. * @returns 是否选择确定
  13. */
  14. public static async show(options:{title?:string,content?:string,ok?:string,cancel?:string,show?:boolean}):Promise<boolean>{
  15. const ui = await gui.show(UIAlert);
  16. return await ui.await_choose(options);
  17. }
  18. protected onCreated(): void {
  19. let layout = this.getLayout<Layout_UIAlert>();
  20. this.onButtonEvent(layout.btnOK, () => {
  21. this.wait.resolve(true);
  22. this.close();
  23. });
  24. this.onButtonEvent(layout.btnCancel, () => {
  25. this.wait.resolve(false);
  26. this.close();
  27. });
  28. }
  29. protected onDispose(): void {
  30. this.wait.resolve(false);
  31. this.wait.dispose();
  32. this.wait=null;
  33. }
  34. private wait=get_new_wait<boolean>();
  35. public async await_choose(options:{title?:string,content?:string,ok?:string,cancel?:string,show?:boolean}):Promise<boolean>{
  36. let layout = this.getLayout<Layout_UIAlert>();
  37. layout.title.string = options.title || '提示';
  38. layout.btnCancel.node.active = options.show;
  39. return this.wait.wait();
  40. }
  41. }