Files
rd_mes_uniapp/utils/audio.ts
2025-12-18 14:11:48 +08:00

91 lines
1.9 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* 这是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
}