44f54a3b69db9a76d2f5368af5d3255d62f66827.js 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406
  1. System.register(["__unresolved_0", "cc", "__unresolved_1", "__unresolved_2", "__unresolved_3", "__unresolved_4", "__unresolved_5", "__unresolved_6"], function (_export, _context) {
  2. "use strict";
  3. var _reporterNs, _cclegacy, __checkObsolete__, __checkObsoleteInNamespace__, _decorator, AudioClip, AudioSource, Singleton, bundleMgr, Constants, settingData, Logger, Utils, _dec, _class, _crd, ccclass, property, AudioManager, audioMgr;
  4. function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
  5. function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
  6. function _reportPossibleCrUseOfSingleton(extras) {
  7. _reporterNs.report("Singleton", "./Singleton", _context.meta, extras);
  8. }
  9. function _reportPossibleCrUseOfbundleMgr(extras) {
  10. _reporterNs.report("bundleMgr", "./BundleManager", _context.meta, extras);
  11. }
  12. function _reportPossibleCrUseOfConstants(extras) {
  13. _reporterNs.report("Constants", "../../data/Constants", _context.meta, extras);
  14. }
  15. function _reportPossibleCrUseOfsettingData(extras) {
  16. _reporterNs.report("settingData", "../../data/SettingData", _context.meta, extras);
  17. }
  18. function _reportPossibleCrUseOfLogger(extras) {
  19. _reporterNs.report("Logger", "../../extend/Logger", _context.meta, extras);
  20. }
  21. function _reportPossibleCrUseOfUtils(extras) {
  22. _reporterNs.report("Utils", "../../utils/Utils", _context.meta, extras);
  23. }
  24. return {
  25. setters: [function (_unresolved_) {
  26. _reporterNs = _unresolved_;
  27. }, function (_cc) {
  28. _cclegacy = _cc.cclegacy;
  29. __checkObsolete__ = _cc.__checkObsolete__;
  30. __checkObsoleteInNamespace__ = _cc.__checkObsoleteInNamespace__;
  31. _decorator = _cc._decorator;
  32. AudioClip = _cc.AudioClip;
  33. AudioSource = _cc.AudioSource;
  34. }, function (_unresolved_2) {
  35. Singleton = _unresolved_2.Singleton;
  36. }, function (_unresolved_3) {
  37. bundleMgr = _unresolved_3.bundleMgr;
  38. }, function (_unresolved_4) {
  39. Constants = _unresolved_4.Constants;
  40. }, function (_unresolved_5) {
  41. settingData = _unresolved_5.settingData;
  42. }, function (_unresolved_6) {
  43. Logger = _unresolved_6.Logger;
  44. }, function (_unresolved_7) {
  45. Utils = _unresolved_7.Utils;
  46. }],
  47. execute: function () {
  48. _crd = true;
  49. _cclegacy._RF.push({}, "ee7a147895KzoCz1nKJrCUQ", "AudioManager", undefined);
  50. __checkObsolete__(['_decorator', 'AudioClip', 'AudioSource']);
  51. ({
  52. ccclass,
  53. property
  54. } = _decorator);
  55. /**音乐播放数据结构*/
  56. AudioManager = (_dec = ccclass('AudioManager'), _dec(_class = class AudioManager extends (_crd && Singleton === void 0 ? (_reportPossibleCrUseOfSingleton({
  57. error: Error()
  58. }), Singleton) : Singleton) {
  59. constructor() {
  60. super(...arguments);
  61. //缓存的音乐
  62. this.cachedAudioArr = [];
  63. /**
  64. * 播放音效 不会两个相同的音乐重复播放 可以停止
  65. * @param path 播放音乐的路径
  66. * @param loop 是否循环播放
  67. * @param s 如果为-1则最大音量立即播放 如果为其他则慢慢音量递增起来播放
  68. * @returns
  69. */
  70. this.bgVolumeMax = 0.8;
  71. }
  72. /**
  73. * 预加载音乐
  74. * 这儿前面 bundleManager资源包已经 loadLaunchBundles加载过了
  75. * 可以直接 再次
  76. */
  77. initialize() {
  78. var _this = this;
  79. return _asyncToGenerator(function* () {
  80. var audioAssets = Object.entries((_crd && Constants === void 0 ? (_reportPossibleCrUseOfConstants({
  81. error: Error()
  82. }), Constants) : Constants).audios).map(_ref => {
  83. var [key, path] = _ref;
  84. return {
  85. path: path,
  86. type: AudioClip
  87. };
  88. }).filter(asset => !!asset.path);
  89. yield (_crd && bundleMgr === void 0 ? (_reportPossibleCrUseOfbundleMgr({
  90. error: Error()
  91. }), bundleMgr) : bundleMgr).loadMultipleAssets((_crd && Constants === void 0 ? (_reportPossibleCrUseOfConstants({
  92. error: Error()
  93. }), Constants) : Constants).bundleName.audios, audioAssets, progress => {
  94. /*进度条0~1*/
  95. }, (err, clip, path) => {
  96. if (err) {
  97. (_crd && Logger === void 0 ? (_reportPossibleCrUseOfLogger({
  98. error: Error()
  99. }), Logger) : Logger).error("加载资源失败:", err);
  100. } else {
  101. _this.cachedAudioArr.push({
  102. clip: clip,
  103. audioSource: null,
  104. path: path,
  105. playStatus: false,
  106. totalTime: clip.getDuration(),
  107. time_id: -1,
  108. t: 0
  109. });
  110. }
  111. });
  112. })();
  113. }
  114. play(path, loop, s) {
  115. var _this2 = this;
  116. return _asyncToGenerator(function* () {
  117. if (loop === void 0) {
  118. loop = false;
  119. }
  120. if (s === void 0) {
  121. s = -1;
  122. }
  123. if ((_crd && Utils === void 0 ? (_reportPossibleCrUseOfUtils({
  124. error: Error()
  125. }), Utils) : Utils).isNull(path) || !(_crd && settingData === void 0 ? (_reportPossibleCrUseOfsettingData({
  126. error: Error()
  127. }), settingData) : settingData).data.bgMusic) return;
  128. var fun = audio => {
  129. if (audio.audioSource == null) {
  130. audio.audioSource = _this2.audioSourceLoop(loop);
  131. }
  132. if (audio.playStatus) return;
  133. audio.audioSource.clip = audio.clip;
  134. if (audio.time_id) {
  135. clearInterval(audio.time_id);
  136. if (audio.audioSource.playing) {
  137. audio.audioSource.pause();
  138. }
  139. }
  140. audio.audioSource.play();
  141. if (s == -1) {
  142. audio.audioSource.volume = _this2.bgVolumeMax;
  143. } else {
  144. audio.t = 0;
  145. audio.audioSource.volume = 0;
  146. var interval = 1 / s / 10;
  147. audio.time_id = setInterval(() => {
  148. audio.t += interval;
  149. var volume = audio.t / s;
  150. if (volume >= _this2.bgVolumeMax) {
  151. clearInterval(audio.time_id);
  152. } else {
  153. audio.audioSource.volume = volume;
  154. }
  155. }, interval * 1000);
  156. }
  157. audio.playStatus = true;
  158. };
  159. var a = _this2.cachedAudioArr.find(e => e.path == path);
  160. if (a) {
  161. fun(a);
  162. } else {
  163. yield (_crd && bundleMgr === void 0 ? (_reportPossibleCrUseOfbundleMgr({
  164. error: Error()
  165. }), bundleMgr) : bundleMgr).loadAsset((_crd && Constants === void 0 ? (_reportPossibleCrUseOfConstants({
  166. error: Error()
  167. }), Constants) : Constants).bundleName.audios, path, AudioClip, (err, clip) => {
  168. if (err) {
  169. (_crd && Logger === void 0 ? (_reportPossibleCrUseOfLogger({
  170. error: Error()
  171. }), Logger) : Logger).error("加载资源失败:", err);
  172. } else {
  173. var data = {
  174. path: path,
  175. clip: clip,
  176. audioSource: null,
  177. playStatus: false,
  178. totalTime: clip.getDuration(),
  179. time_id: -1,
  180. t: 0
  181. };
  182. _this2.cachedAudioArr.push(data);
  183. fun(data);
  184. }
  185. });
  186. }
  187. })();
  188. }
  189. /**
  190. * 单次播放一次的音效 可以停止
  191. * @param path 音乐路径
  192. * @param overlap 是否可以重复两个同一个音效连续播放
  193. * @returns
  194. */
  195. playOneShot(path, overlap) {
  196. var _this3 = this;
  197. return _asyncToGenerator(function* () {
  198. if (overlap === void 0) {
  199. overlap = true;
  200. }
  201. if ((_crd && Utils === void 0 ? (_reportPossibleCrUseOfUtils({
  202. error: Error()
  203. }), Utils) : Utils).isNull(path) || !(_crd && settingData === void 0 ? (_reportPossibleCrUseOfsettingData({
  204. error: Error()
  205. }), settingData) : settingData).data.soundFx) return;
  206. var fun = audio => {
  207. if (overlap || !audio.playStatus) {
  208. if (audio.audioSource == null) {
  209. audio.audioSource = _this3.audioSourceLoop(false);
  210. }
  211. audio.audioSource.clip = audio.clip;
  212. audio.audioSource.play();
  213. audio.audioSource.volume = 1;
  214. audio.playStatus = true;
  215. setTimeout(() => {
  216. audio.playStatus = false;
  217. }, audio.totalTime * 1000);
  218. }
  219. };
  220. var a = _this3.cachedAudioArr.find(e => e.path == path);
  221. if (a) {
  222. fun(a);
  223. } else {
  224. yield (_crd && bundleMgr === void 0 ? (_reportPossibleCrUseOfbundleMgr({
  225. error: Error()
  226. }), bundleMgr) : bundleMgr).loadAsset((_crd && Constants === void 0 ? (_reportPossibleCrUseOfConstants({
  227. error: Error()
  228. }), Constants) : Constants).bundleName.audios, path, AudioClip, (err, clip) => {
  229. if (err) {
  230. (_crd && Logger === void 0 ? (_reportPossibleCrUseOfLogger({
  231. error: Error()
  232. }), Logger) : Logger).error("加载资源失败:", err);
  233. } else {
  234. var data = {
  235. path: path,
  236. clip: clip,
  237. audioSource: null,
  238. playStatus: false,
  239. totalTime: clip.getDuration(),
  240. time_id: -1,
  241. t: 0
  242. };
  243. _this3.cachedAudioArr.push(data);
  244. fun(data);
  245. }
  246. });
  247. }
  248. })();
  249. }
  250. /**
  251. * 停止播放音效
  252. * @param path 音效路径名称
  253. * @param s 为-1立即停止播放 非-1则是慢慢的声音越来越小的停止播放
  254. * @returns
  255. */
  256. stop(path, s) {
  257. if (s === void 0) {
  258. s = -1;
  259. }
  260. if ((_crd && Utils === void 0 ? (_reportPossibleCrUseOfUtils({
  261. error: Error()
  262. }), Utils) : Utils).isNull(path)) return;
  263. var audio = this.cachedAudioArr.find(e => e.path == path);
  264. if (audio) {
  265. if (!audio.audioSource) return;
  266. if (!audio.audioSource.playing) return;
  267. if (audio.time_id) {
  268. clearInterval(audio.time_id);
  269. }
  270. var audioSource = audio.audioSource;
  271. if (s == -1) {
  272. audioSource == null || audioSource.pause();
  273. } else {
  274. audio.t = 0;
  275. var interval = 1 / s / 10;
  276. audio.time_id = setInterval(() => {
  277. if (audioSource) {
  278. audio.t += interval;
  279. var volume = this.bgVolumeMax - audio.t / s;
  280. if (volume <= 0) {
  281. clearInterval(audio.time_id);
  282. audioSource == null || audioSource.pause();
  283. } else {
  284. audioSource.volume = volume <= 0 ? 0 : volume;
  285. }
  286. }
  287. }, interval * 1000);
  288. }
  289. audio.playStatus = false;
  290. }
  291. }
  292. /**
  293. * 加载音效
  294. * @param loop 是否循环
  295. */
  296. audioSourceLoop(loop) {
  297. var audioSource = null;
  298. if (loop) {
  299. //播放单次的时候具柄
  300. audioSource = this.getAudioSource(null, true, this.bgVolumeMax);
  301. } else {
  302. //循环播放的时候具柄
  303. audioSource = this.getAudioSource(null, false, 1);
  304. }
  305. return audioSource;
  306. }
  307. /**
  308. * 得到一个播放音乐的控制类
  309. * @param clip 音效片段
  310. * @param loop 是否循环
  311. * @param volume 音量
  312. * @returns 播放类
  313. */
  314. getAudioSource(clip, loop, volume) {
  315. if (clip === void 0) {
  316. clip = null;
  317. }
  318. if (loop === void 0) {
  319. loop = false;
  320. }
  321. if (volume === void 0) {
  322. volume = 1;
  323. }
  324. var audioSource = new AudioSource();
  325. if (clip) {
  326. audioSource.clip = clip;
  327. }
  328. audioSource.loop = loop;
  329. audioSource.volume = volume;
  330. return audioSource;
  331. }
  332. }) || _class); //全局单例
  333. _export("audioMgr", audioMgr = AudioManager.ins());
  334. _cclegacy._RF.pop();
  335. _crd = false;
  336. }
  337. };
  338. });
  339. //# sourceMappingURL=44f54a3b69db9a76d2f5368af5d3255d62f66827.js.map