SettingUI.ts 3.2 KB

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