/** * 这是Fnaudio方法的必选参数约束 */ type FunTypeAudioRequired = { /** * 音频的数据链接,用于直接播放。 */ readonly src : string, /** * 是否自动开始播放,默认 true */ readonly autoplay ?:boolean , /** * 是否遵循系统静音开关, * 当此参数为 false 时,即使用户打开了静音开关,也能继续发出声音, * 默认值 true */ readonly obeyMuteSwitch ?:boolean, /** * 开始播放的位置(单位:s),默认 0 */ readonly startTime ?: number, /** * 是否循环播放,默认 false */ readonly loop ?: boolean, /** * 音量。范围 0~1 */ readonly volume ?: number, /** * 播放的倍率。可取值:0.5/0.8/1.0/1.25/1.5/2.0,默认值为1.0 */ readonly playbackRate ?: 0.5|0.8|1.0|1.25|1.5|2.0 } /** * 封装提示音的方法类 */ class Audio { constructor(required : FunTypeAudioRequired ){ if (required?.volume != undefined && (required.volume < 0 || required.volume > 1)) { throw new Error('提供的volume值不符合规范'); } let innerAudioContext = uni.createInnerAudioContext(); innerAudioContext = Object.assign(innerAudioContext,required) innerAudioContext.onPlay(() => { console.log('开始播放'); }); setTimeout(() => { innerAudioContext.stop() innerAudioContext.destroy() console.log(',销毁实例') }, 900); innerAudioContext.onError((res) => { console.error(res.errMsg); console.error(res.errCode); }); } } /** * 成功提示音 * @return */ export function autioSuccess():void { let audio = null; audio = new Audio({ src:'/static/audio/success.mp3', playbackRate:2, autoplay : true, volume : 1, }) audio = null } /** * 失败提示音 * @return */ export function autioError():void { let audio = null; audio = new Audio({ src:'/static/audio/error.mp3', playbackRate:2, autoplay : true, volume : 1, }) audio = null }