Pārlūkot izejas kodu

框架-音频模块提交

薛鸿潇 5 gadi atpakaļ
vecāks
revīzija
b64833200d

+ 2 - 0
.gitignore

@@ -1,3 +1,5 @@
 /mk_framework/library
 /mk_framework/local
 /mk_framework/temp
+/mk_framework/assets/scene/TestScene.fire
+/mk_framework/assets/scene/TestScene.fire.meta

+ 135 - 0
mk_framework/assets/script/mk/system/AudioSystem.ts

@@ -0,0 +1,135 @@
+/**
+ * 音频模块
+ * @author xhx
+ */
+export default class AudioSystem {
+
+    /**
+     * 背景音乐播放
+     * @param clip 音频资源
+     * @param loop 循环
+     * @returns audio_id
+     */
+    public playMusic(clip: cc.AudioClip, loop: boolean = false): number {
+        return cc.audioEngine.playMusic(clip, loop);
+    }
+    
+    /**
+     * 播放音效文件
+     * @param clip 
+     * @param loop 
+     * @returns audio_id
+     */
+    public playEffect(clip: cc.AudioClip, loop = false): number {
+        return cc.audioEngine.playEffect(clip, loop);
+    }
+
+    /**
+     * 停止播放音效
+     * @param audio_id 
+     */
+    public stopEffect(audio_id: number): void {
+        cc.audioEngine.stopEffect(audio_id);
+    }
+
+    /**
+     * 设置音效声音大小
+     * @param value 
+     */
+    public setEffectVolume(value: number): void {
+        cc.audioEngine.setEffectsVolume(value);
+    }
+
+    /**
+     * 获取音效大小
+     * @return 0.0 - 1.0
+     */
+    public getEffectVolume(): number {
+        return cc.audioEngine.getEffectsVolume();
+    }
+
+    /**
+     * 停止播放所有正在播放的音效
+     */
+    public stopAllEffects() {
+        cc.audioEngine.stopAllEffects();
+    }
+
+    /**
+     * 暂停当前播放音乐
+     */
+    public pauseMusic() {
+        cc.audioEngine.pauseMusic();
+    }
+
+    /**
+     * 恢复当前说暂停的所有音效
+     */
+    public resumeAllEffects() {
+        cc.audioEngine.resumeAllEffects();
+    }
+
+    /**
+     * 恢复当前被暂停音乐音乐
+     */
+    public resumeMusic() {
+        cc.audioEngine.resumeMusic();
+    }
+
+    /**
+     * 暂停播放音乐
+     */
+    public stopMusic() {
+        cc.audioEngine.stopMusic();
+    }
+
+    /**
+     * 设置音乐音量
+     * @param value 0~1音量
+     */
+    public setMusicVolume(value: number) {
+        cc.audioEngine.setMusicVolume(value);
+    }
+
+    /**
+     * 获取音乐音量
+     * @returns {number}
+     */
+    public getMusicVolume() {
+        return cc.audioEngine.getMusicVolume();
+    }
+
+    /**
+     * 音乐是否正在播放(验证些方法来实现背景音乐是否播放完成)
+     * @returns {boolean}
+     */
+    public isMusicPlaying() {
+        return cc.audioEngine.isMusicPlaying();
+    }
+
+    /**
+     * 释放指定音效资源
+     * @param audio 音频资源
+     */
+    public releaseAudio(audio: cc.AudioClip) {
+        if (!audio) {
+            cc.error("【音频】资源" + audio + "不存在, 释放失败")
+            return;
+        }
+        cc.audioEngine.uncache(audio);
+    }
+
+    /**
+     * 停止所有音频
+     */
+    public stopAllAudio() {
+        cc.audioEngine.stopAll();
+    }
+
+    /**
+     * 释放所有音频
+     */
+    public releaseAllAudio() {
+        cc.audioEngine.uncacheAll();
+    }
+}

+ 9 - 0
mk_framework/assets/script/mk/system/AudioSystem.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "1506c7e8-e3ee-4092-83cc-a17f3a7c051d",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 3 - 0
mk_framework/assets/script/mk/system/MKSystem.ts

@@ -1,5 +1,6 @@
 import FileUtil from "../utils/FileUtil";
 import TimeUtil from "../utils/TimeUtil";
+import AudioSystem from "./AudioSystem";
 import LoaderSystem from "./LoaderSystem";
 
 
@@ -16,6 +17,7 @@ class MKSystem {
 
     /** 系统管理 */
     loader:LoaderSystem;
+    audio:AudioSystem;
 
     init() {
         this.initSystem();
@@ -30,6 +32,7 @@ class MKSystem {
         
         //system
         this.loader = new LoaderSystem();
+        this.audio = new AudioSystem();
     }
 }
 

+ 7 - 7
mk_framework/assets/script/mk/utils/FileUtil.ts

@@ -1,11 +1,4 @@
 
-// 读取文件方式
-enum READ_FILE_TYPE {
-    DATA_URL,// readAsDataURL, base64
-    TEXT,// readAsText
-    BINARY,// readAsBinaryString
-    ARRAYBUFFER,// readAsArrayBuffer
-}
 /**s
  * 文件操作工具类
  * @author xhx
@@ -119,4 +112,11 @@ export default class FileUtil {
         }
     }
 
+}
+// 读取文件方式
+enum READ_FILE_TYPE {
+    DATA_URL,// readAsDataURL, base64
+    TEXT,// readAsText
+    BINARY,// readAsBinaryString
+    ARRAYBUFFER,// readAsArrayBuffer
 }