AudioManager.ts 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  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 = "Audio/通用bgm";
  6. public static Game_BG_MUSIC = "Audio/通用bgm";
  7. public static BUTTON_EFFECT1 = "Audio/btn1";
  8. public static eatJinbi = "Audio/吃金币音效";
  9. public static 预发射音效 = "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. })
  37. }
  38. public playBg(path: string) {
  39. cc.audioEngine.stopMusic();
  40. (async () => {
  41. let au = await this.getSoundUrl(path);
  42. if (cc.isValid(au)) {
  43. let audioId = cc.audioEngine.playMusic(au, true);
  44. }
  45. })();
  46. }
  47. public playEffect(effectName: string) {
  48. (async () => {
  49. let au = await this.getSoundUrl(effectName);
  50. if (cc.isValid(au)) {
  51. let audioId = cc.audioEngine.playEffect(au, false);
  52. }
  53. })();
  54. }
  55. public playGameBg() {
  56. this.playBg(AudioManager.Game_BG_MUSIC);
  57. }
  58. public playHallBg() {
  59. this.playBg(AudioManager.HALL_BG_MUSIC);
  60. }
  61. public playBtnEffect(effectType: number = 0) {
  62. switch (effectType) {
  63. case 0:
  64. this.playEffect(AudioManager.BUTTON_EFFECT1);
  65. break;
  66. case 1:
  67. break;
  68. case 2:
  69. break;
  70. default:
  71. break;
  72. }
  73. }
  74. public static stopBg() {
  75. cc.audioEngine.stopMusic();
  76. }
  77. }