SettingUI.ts 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. import { _decorator, EventTouch, Label, Slider, Sprite, SpriteFrame } from 'cc';
  2. import { settingData } from '../data/SettingData';
  3. import { BaseExp } from '../core/base/BaseExp';
  4. import { autoBind } from '../extend/AutoBind';
  5. import MsgHints from '../utils/MsgHints';
  6. const { ccclass, property } = _decorator;
  7. //设置页面
  8. @ccclass("SettingUI")
  9. export class SettingUI extends BaseExp {
  10. @property({type:SpriteFrame,tooltip:"震动开图片"})
  11. public vibrate_open: SpriteFrame = null!;
  12. @property({type:SpriteFrame,tooltip:"震动关闭图片"})
  13. public vibrate_close: SpriteFrame = null!;
  14. @property({type:SpriteFrame,tooltip:"背景音乐开图片"})
  15. public bg_music_open: SpriteFrame = null!;
  16. @property({type:SpriteFrame,tooltip:"背景音乐关图片"})
  17. public bg_music_close: SpriteFrame = null!;
  18. @property({type:SpriteFrame,tooltip:"音效开图片"})
  19. public sound_open: SpriteFrame = null!;
  20. @property({type:SpriteFrame,tooltip:"音效关图片"})
  21. public sound_close: SpriteFrame = null!;
  22. @autoBind({type:Sprite,tooltip:"背景音乐节点"})
  23. public vibrate_sp: Sprite = null!;
  24. @autoBind({type:Sprite,tooltip:"背景音乐勾节点"})
  25. public bgMusic_sp: Sprite = null!;
  26. @autoBind({type:Sprite,tooltip:"音效节点"})
  27. public sound_sp: Sprite = null!;
  28. @autoBind({type:Slider,tooltip:"滑块节点"})
  29. public slider: Slider = null!;
  30. @autoBind({type:Label,tooltip:"滑块数值节点文本"})
  31. public speed_num_label: Label = null!;
  32. public show () {
  33. this.hasAnim = true;
  34. //加载数据ui
  35. this.loadDataUI();
  36. }
  37. /**
  38. * 加载刷新数据ui
  39. */
  40. public loadDataUI(){
  41. this.bgMusic_sp.spriteFrame = settingData.data.bgMusic ? this.bg_music_open : this.bg_music_close;
  42. this.sound_sp.spriteFrame = settingData.data.soundFx ? this.sound_open : this.sound_close;
  43. this.vibrate_sp.spriteFrame = settingData.data.vibrate ? this.vibrate_open : this.vibrate_close;
  44. //设置滑块
  45. this.setSlider();
  46. }
  47. /**
  48. * 设置滑块的值
  49. */
  50. public setSlider(){
  51. this.slider.progress = settingData.data.sensitivity;
  52. this.speed_num_label.string = Math.round(settingData.data.sensitivity * 100) + '%';
  53. }
  54. /**
  55. * 滑块事件
  56. * @param event 事件
  57. * @param customEventData 自定义数据
  58. */
  59. public onSliderChanged(event: EventTouch, customEventData: string) {
  60. let value = this.slider.progress;
  61. let sensitivity:number = Math.max(0.05,parseFloat(value.toFixed(1)));
  62. settingData.data.sensitivity = sensitivity;
  63. this.setSlider();
  64. }
  65. /**
  66. * 按钮点击事件
  67. * @param event 事件
  68. * @param param 参数
  69. */
  70. override onBtnClicked(event:EventTouch, param:any) {
  71. super.onBtnClicked(event,param);
  72. let btnName = event.target.name;
  73. if(btnName === 'vibrate_sp'){//震动开关
  74. let value: boolean = settingData.data.vibrate = !settingData.data.vibrate;
  75. MsgHints.show(value?`vibrate has been turned on`:`vibrate has been turned off`);
  76. }else if(btnName === 'bgMusic_sp'){//背景开关
  77. let value: boolean = settingData.data.bgMusic = !settingData.data.bgMusic;
  78. MsgHints.show(value? `bg music has been turned on`:`bg music has been turned off`);
  79. }else if(btnName === 'sound_sp'){//音效开关
  80. let value: boolean = settingData.data.soundFx = !settingData.data.soundFx;
  81. MsgHints.show(value?`sound has been turned on`:`sound has been turned off`);
  82. }
  83. this.loadDataUI();
  84. }
  85. }