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