更新技术美术明亮教具室版:字体、指路、教学与庆祝效果

This commit is contained in:
toshiocn
2026-10-22 16:37:43 +08:00
parent 2d5a9e9553
commit 66b3ca4ea0
113 changed files with 7363 additions and 150 deletions
@@ -0,0 +1,31 @@
// Browser-only adapter for the packaged WeChat WAV sound effects.
export function browserAudio(report){
const players=new Set();let disposed=false,plays=0;
return {
setInnerAudioOption(){},
createInnerAudioContext(){
const player=new Audio();player.preload='auto';players.add(player);
let errorHandler=()=>{},playHandler=()=>{},generation=0;
const error=reason=>{
if(disposed||reason?.name==='AbortError')return;
report('音效播放失败:'+(reason?.message||'请检查页面声音权限'));
errorHandler({errMsg:reason?.message||'浏览器音频加载失败'});
};
player.addEventListener('error',()=>error(player.error));
return {
set src(path){player.src=new URL('../'+path,location.href).href;},
set volume(value){player.volume=value;},
set obeyMuteSwitch(value){},
onError(callback){errorHandler=callback;},
onPlay(callback){playHandler=callback;},
stop(){generation++;player.pause();if(player.readyState)player.currentTime=0;},
play(){
const current=generation;
player.play().then(()=>{if(!disposed&&current===generation){playHandler();report('音效已播放 · '+(++plays)+' 次');}})
.catch(reason=>{if(current===generation)error(reason);});
}
};
},
dispose(){disposed=true;for(const player of players){player.pause();player.removeAttribute('src');player.load();}players.clear();}
};
}