SettingViewComp.ts 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. /*
  2. * @Author: mojunshou 1637302775@qq.com
  3. * @Date: 2025-03-20 15:40:20
  4. * @LastEditors: mojunshou 1637302775@qq.com
  5. * @LastEditTime: 2025-03-31 16:44:21
  6. * @Description:设置界面
  7. */
  8. import { _decorator } from "cc";
  9. import { oops } from "db://oops-framework/core/Oops";
  10. import { ecs } from "db://oops-framework/libs/ecs/ECS";
  11. import { CCComp } from "db://oops-framework/module/common/CCComp";
  12. import { UIID } from "../config/GameUIConfig";
  13. import { CCVMParentComp } from "db://oops-framework/module/common/CCVMParentComp";
  14. import { Toggle } from "cc";
  15. import { Account } from "../../account/Account";
  16. import { ImageAsset, Texture2D, SpriteFrame, Sprite } from "cc";
  17. import { IRemoteOptions, resLoader } from "db://oops-framework/core/common/loader/ResLoader";
  18. const { ccclass, property } = _decorator;
  19. /** 视图层对象 */
  20. @ccclass('SettingViewComp')
  21. @ecs.register('SettingView', false)
  22. export class SettingViewComp extends CCVMParentComp {
  23. data: any = {
  24. nickName: "金砖大王",
  25. uid: "1234567890",
  26. music_state: true,
  27. effect_state: true
  28. }
  29. /** 视图层逻辑代码分离演示 */
  30. start() {
  31. // const entity = this.ent as ecs.Entity; // ecs.Entity 可转为当前模块的具体实体对象
  32. this.setButton();
  33. this.updateHead();
  34. }
  35. /** 视图对象通过 ecs.Entity.remove(SettingViewComp) 删除组件是触发组件处理自定义释放逻辑 */
  36. reset() {
  37. this.node.destroy();
  38. }
  39. private btn_about() {
  40. oops.gui.open(UIID.AboutUs);
  41. }
  42. private btn_close() {
  43. oops.gui.remove(UIID.Setting);
  44. }
  45. private btn_cache() {
  46. oops.gui.toast("清理成功");
  47. }
  48. /**
  49. * @description: 设置音乐开关
  50. * @param {Toggle} toggle
  51. * @return {*}
  52. */
  53. private onMusicToggleContainerClick(toggle: Toggle) {
  54. switch (toggle.node.name) {
  55. case "On":
  56. this.data.music_state = true;
  57. break;
  58. case "Off":
  59. this.data.music_state = false;
  60. break;
  61. }
  62. console.log("音乐状态", this.data.music_state);
  63. oops.audio.switchMusic = this.data.music_state;
  64. }
  65. /**
  66. * @description: 设置音乐开关
  67. * @param {Toggle} toggle
  68. * @return {*}
  69. */
  70. private onEffectToggleContainerClick(toggle: Toggle) {
  71. switch (toggle.node.name) {
  72. case "On":
  73. this.data.effect_state = true;
  74. break;
  75. case "Off":
  76. this.data.effect_state = false;
  77. break;
  78. }
  79. console.log("音效状态", this.data.effect_state);
  80. oops.audio.switchEffect = this.data.effect_state;
  81. }
  82. //更新头像
  83. private updateHead() {
  84. let account = ecs.getEntity<Account>(Account);
  85. let sprite = this.node.getChildByPath("Bg/btn_head/sp_head")!.uiSprite;
  86. // let url = account.AccountModel.head;
  87. let url = "http://www.kuaipng.com/Uploads/pic/w/2020/07-16/89010/water_89010_698_698_.png"
  88. this.data.nickName = account.AccountModel.AccountName;
  89. this.data.uid = account.AccountModel.uid;
  90. var opt: IRemoteOptions = { ext: ".png" };
  91. var onComplete = (err: Error | null, data: ImageAsset) => {
  92. const texture = new Texture2D();
  93. texture.image = data;
  94. const spriteFrame = new SpriteFrame();
  95. spriteFrame.texture = texture;
  96. sprite.spriteFrame = spriteFrame;
  97. }
  98. resLoader.loadRemote<ImageAsset>(url, opt, onComplete);
  99. }
  100. }