feat(christmas): 增强粒子效果和音频状态管理
- 将粒子数量从1000增加到2000,尘埃粒子从2000增加到3000 - 修改 MediaPipe WASM 路径为本地 data/wasm 目录 - 实现音频状态的持久化存储和恢复功能 - 添加定时保存音频状态逻辑,每5秒保存一次 - 增强音频播放控制,确保循环播放和自动恢复 - 优化音频事件监听器,实时同步播放状态
This commit is contained in:
@@ -425,8 +425,8 @@
|
|||||||
accentRed: 0xcc0000, // 略微提亮红色
|
accentRed: 0xcc0000, // 略微提亮红色
|
||||||
},
|
},
|
||||||
particles: {
|
particles: {
|
||||||
count: 1000,
|
count: 2000,
|
||||||
dustCount: 2000,
|
dustCount: 3000,
|
||||||
treeHeight: 24,
|
treeHeight: 24,
|
||||||
treeRadius: 8
|
treeRadius: 8
|
||||||
},
|
},
|
||||||
@@ -932,7 +932,7 @@
|
|||||||
async function initMediaPipe() {
|
async function initMediaPipe() {
|
||||||
video = document.getElementById('webcam');
|
video = document.getElementById('webcam');
|
||||||
const vision = await FilesetResolver.forVisionTasks(
|
const vision = await FilesetResolver.forVisionTasks(
|
||||||
"https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision@0.10.3/wasm"
|
"data/wasm"
|
||||||
);
|
);
|
||||||
// 使用 Google Cloud Storage 上的模型文件
|
// 使用 Google Cloud Storage 上的模型文件
|
||||||
handLandmarker = await HandLandmarker.createFromOptions(vision, {
|
handLandmarker = await HandLandmarker.createFromOptions(vision, {
|
||||||
@@ -1281,19 +1281,19 @@
|
|||||||
// 确保音频循环播放
|
// 确保音频循环播放
|
||||||
audio.loop = true;
|
audio.loop = true;
|
||||||
|
|
||||||
// 保存音频状态到 localStorage
|
// 保存音频状态到 sessionStorage
|
||||||
function saveAudioState() {
|
function saveAudioState() {
|
||||||
localStorage.setItem('bgMusicState', JSON.stringify({
|
sessionStorage.setItem('bgMusicState', JSON.stringify({
|
||||||
isPlaying: isPlaying && !audio.paused,
|
isPlaying: isPlaying && !audio.paused,
|
||||||
isMuted: isMuted,
|
isMuted: isMuted,
|
||||||
currentTime: audio.currentTime
|
currentTime: audio.currentTime
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
// 从 localStorage 恢复音频状态
|
// 从 sessionStorage 恢复音频状态
|
||||||
function restoreAudioState() {
|
function restoreAudioState() {
|
||||||
try {
|
try {
|
||||||
const savedState = localStorage.getItem('bgMusicState');
|
const savedState = sessionStorage.getItem('bgMusicState');
|
||||||
if (savedState) {
|
if (savedState) {
|
||||||
const state = JSON.parse(savedState);
|
const state = JSON.parse(savedState);
|
||||||
isMuted = state.isMuted;
|
isMuted = state.isMuted;
|
||||||
|
|||||||
22
data/wasm/vision_wasm_internal.js
Normal file
22
data/wasm/vision_wasm_internal.js
Normal file
File diff suppressed because one or more lines are too long
BIN
data/wasm/vision_wasm_internal.wasm
Normal file
BIN
data/wasm/vision_wasm_internal.wasm
Normal file
Binary file not shown.
22
data/wasm/vision_wasm_nosimd_internal.js
Normal file
22
data/wasm/vision_wasm_nosimd_internal.js
Normal file
File diff suppressed because one or more lines are too long
BIN
data/wasm/vision_wasm_nosimd_internal.wasm
Normal file
BIN
data/wasm/vision_wasm_nosimd_internal.wasm
Normal file
Binary file not shown.
Reference in New Issue
Block a user