91 lines
1.9 KiB
TypeScript
91 lines
1.9 KiB
TypeScript
/**
|
||
* 这是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
|
||
}
|