diff --git a/src/audioManager.js b/src/audioManager.js
index 044ba09..03ac17e 100644
--- a/src/audioManager.js
+++ b/src/audioManager.js
@@ -123,6 +123,8 @@ class AudioManager {
// 网络状态相关
this.networkOnline = true;
this.pendingPlayKey = null;
+ // 新增:就绪状态映射
+ this.readyMap = new Map();
try {
uni.onNetworkStatusChange(({ isConnected }) => {
this.networkOnline = !!isConnected;
@@ -224,6 +226,8 @@ class AudioManager {
} catch (_) {}
}
clearTimeout(loadTimeout);
+ // 标记为已就绪
+ this.readyMap.set(key, true);
debugLog(`音频 ${key} 已加载完成`);
uni.$emit("audioLoaded", key);
const loadedAudioKeys = uni.getStorageSync("loadedAudioKeys") || {};
@@ -237,6 +241,8 @@ class AudioManager {
clearTimeout(loadTimeout);
debugLog(`音频 ${key} 加载失败:`, res.errMsg);
this.allowPlayMap.set(key, false);
+ // 标记为未就绪
+ this.readyMap.set(key, false);
this.handleAudioError(key);
if (callback) callback();
});
@@ -476,6 +482,7 @@ class AudioManager {
this.allowPlayMap.delete(k);
this.retryCount.delete(k);
this.audioMap.delete(k);
+ this.readyMap.delete(k);
}
this.audioKeys = [];
this.currentLoadingIndex = 0;
@@ -573,7 +580,23 @@ class AudioManager {
}
debugLog(`静音状态已设置为: ${this.isMuted}`);
}
+
+ // 新增:返回音频加载进度(0~1)
+ getLoadProgress() {
+ // 总数优先使用已初始化的 audioKeys,未初始化则回退到 audioFils
+ const keys =
+ this.audioKeys && this.audioKeys.length > 0
+ ? this.audioKeys
+ : Object.keys(audioFils);
+ const total = keys.length;
+ if (total === 0) return 0;
+ let loaded = 0;
+ for (const k of keys) {
+ if (this.readyMap.get(k)) loaded++;
+ }
+ return loaded / total;
+ }
}
// 导出单例
-export default new AudioManager();
+export default new AudioManager();
\ No newline at end of file
diff --git a/src/pages.json b/src/pages.json
index ffdb1ff..931d6b6 100644
--- a/src/pages.json
+++ b/src/pages.json
@@ -1,5 +1,8 @@
{
"pages": [
+ {
+ "path": "pages/load-resources"
+ },
{
"path": "pages/index"
},
diff --git a/src/pages/load-resources.vue b/src/pages/load-resources.vue
new file mode 100644
index 0000000..d69f220
--- /dev/null
+++ b/src/pages/load-resources.vue
@@ -0,0 +1,107 @@
+
+
+
+
+
+
+
+
+
+
+ 资源加载中...
+
+
+
+
+