AudioManager.ts 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. import { _decorator, AudioClip, AudioSource, Component, director, Label, Node, resources } from 'cc';
  2. import { EventManager } from '../EventManager';
  3. import HTTPS, { NetPost } from '../MyFrame/HTTPS';
  4. const { ccclass, property } = _decorator;
  5. @ccclass('AudioManager')
  6. export class AudioManager extends Component {
  7. public static BGM = "Sound/gbg";//
  8. public static dead = "Sound/dead";//
  9. public static anniu = "Sound/anniu";//
  10. public static heart = "Sound/heart";//
  11. static _Instance: AudioManager;
  12. curAudioSE: AudioSource;
  13. curAudioBGM: AudioSource;
  14. static get Instance(): AudioManager {
  15. if (this._Instance == null) {
  16. let node = new Node();
  17. let comp = node.addComponent(AudioManager);
  18. node.name = "AudioManager";
  19. //加入场景节点
  20. let scene = director.getScene();
  21. scene.addChild(node);
  22. director.addPersistRootNode(node);
  23. //播放音效的组件
  24. comp.curAudioSE = comp.addComponent(AudioSource);
  25. comp.curAudioSE.loop = false;
  26. //播放BGM的组件
  27. comp.curAudioBGM = comp.addComponent(AudioSource);
  28. comp.curAudioBGM.loop = true;
  29. this._Instance = comp;
  30. }
  31. return this._Instance;
  32. }
  33. playBgm(name: string) {
  34. (async () => {
  35. let au = await this.getSoundUrl(name);
  36. if (au) {
  37. if (localStorage.getItem('Music') == 'true') {
  38. this.curAudioBGM.volume = 1
  39. } else {
  40. this.curAudioBGM.volume = 0
  41. }
  42. this.curAudioBGM.clip = au
  43. this.curAudioBGM.play();
  44. }
  45. })();
  46. }
  47. setBgmvolume() {
  48. if (localStorage.getItem('Music') == 'true') {
  49. this.curAudioBGM.volume = 1
  50. } else {
  51. this.curAudioBGM.volume = 0
  52. }
  53. }
  54. playEffict(name: string) {
  55. (async () => {
  56. let au = await this.getSoundUrl(name);
  57. if (au) {
  58. let temp = 0
  59. if (localStorage.getItem('Effect') == 'true') {
  60. temp = 1
  61. } else {
  62. temp = 0
  63. }
  64. this.curAudioSE.playOneShot(au, temp);
  65. }
  66. })();
  67. }
  68. public getSoundUrl(path: string): Promise<AudioClip> {
  69. return new Promise<AudioClip>((re, rj) => {
  70. resources.load(path, AudioClip, (error: Error, resource: AudioClip) => {
  71. if (!error) {
  72. re(resource);
  73. } else {
  74. re(null);
  75. }
  76. })
  77. })
  78. //return cc.url.raw(path)
  79. }
  80. }