AudioManager.ts 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. // import LocalData from "../Template/LocalData";
  2. import LocalData from "./LocalData";
  3. export default class AudioManager {
  4. public static readonly instance: AudioManager = new AudioManager();
  5. public static HALL_BG_MUSIC = "res/Audio/通用bgm";
  6. public static Game_BG_MUSIC = "res/Audio/通用bgm";
  7. public static BUTTON_EFFECT1 = "res/Audio/btn1";
  8. public static eatJinbi = "res/Audio/吃金币音效";
  9. public static 预发射音效 = "res/Audio/预发射音效";
  10. public bgPath = null;
  11. public playOnlyOnceAudioRecord: object = null;
  12. constructor() {
  13. this.UpdateVolume()
  14. }
  15. public UpdateVolume() {
  16. if (LocalData.getInstance().getMusic()) {
  17. cc.audioEngine.setMusicVolume(1)
  18. } else {
  19. cc.audioEngine.setMusicVolume(0)
  20. }
  21. if (LocalData.getInstance().getEffects()) {
  22. cc.audioEngine.setEffectsVolume(1)
  23. } else {
  24. cc.audioEngine.setEffectsVolume(0)
  25. }
  26. }
  27. public getSoundUrl(path: string): Promise<cc.AudioClip> {
  28. return new Promise<cc.AudioClip>((re, rj) => {
  29. // cc.loader.loadRes(path, cc.AudioClip, (error: Error, resource: cc.AudioClip) => {
  30. // if (!error) {
  31. // re(resource);
  32. // } else {
  33. // re(null);
  34. // }
  35. // });
  36. let bundle = cc.assetManager.getBundle("sub");
  37. bundle.load(path, cc.AudioClip, (error: Error, resource: cc.AudioClip) => {
  38. if (!error) {
  39. re(resource);
  40. } else {
  41. re(null);
  42. }
  43. });
  44. })
  45. }
  46. public playBg(path: string) {
  47. cc.audioEngine.stopMusic();
  48. (async () => {
  49. let au = await this.getSoundUrl(path);
  50. if (cc.isValid(au)) {
  51. let audioId = cc.audioEngine.playMusic(au, true);
  52. }
  53. })();
  54. }
  55. public playEffect(effectName: string) {
  56. (async () => {
  57. let au = await this.getSoundUrl(effectName);
  58. if (cc.isValid(au)) {
  59. let audioId = cc.audioEngine.playEffect(au, false);
  60. }
  61. })();
  62. }
  63. public playGameBg() {
  64. this.playBg(AudioManager.Game_BG_MUSIC);
  65. }
  66. public playHallBg() {
  67. this.playBg(AudioManager.HALL_BG_MUSIC);
  68. }
  69. public playBtnEffect(effectType: number = 0) {
  70. switch (effectType) {
  71. case 0:
  72. this.playEffect(AudioManager.BUTTON_EFFECT1);
  73. break;
  74. case 1:
  75. break;
  76. case 2:
  77. break;
  78. default:
  79. break;
  80. }
  81. }
  82. public static stopBg() {
  83. cc.audioEngine.stopMusic();
  84. }
  85. }