|
@@ -49,7 +49,8 @@ export default defineComponent({
|
|
|
dragStatus: false, // 是否开始拖动
|
|
|
playState: 'pause' as 'play' | 'pause',
|
|
|
vudio: null as any,
|
|
|
- afterMa3: true
|
|
|
+ afterMa3: true,
|
|
|
+ count: 0
|
|
|
});
|
|
|
const canvasRef: any = ref();
|
|
|
const audioRef: any = ref();
|
|
@@ -58,14 +59,27 @@ export default defineComponent({
|
|
|
watch(
|
|
|
() => props.show,
|
|
|
val => {
|
|
|
+ data.count = 0;
|
|
|
if (val) {
|
|
|
- // onToggleAudio();
|
|
|
+ // data.count = 0;
|
|
|
+ // audioRef.value.src = item.value.content;
|
|
|
+ onToggleAudio();
|
|
|
} else {
|
|
|
audioRef.value.pause();
|
|
|
+ // audioRef.value.src = '';
|
|
|
data.playState = 'pause';
|
|
|
+ // data.vudio = null;
|
|
|
}
|
|
|
}
|
|
|
);
|
|
|
+ // watch(
|
|
|
+ // () => props.item,
|
|
|
+ // () => {
|
|
|
+ // // data.count = 0;
|
|
|
+ // // audioRef.value.src = item.value.content;
|
|
|
+ // onToggleAudio();
|
|
|
+ // }
|
|
|
+ // );
|
|
|
watch(
|
|
|
() => props.pageVisibility,
|
|
|
val => {
|
|
@@ -79,9 +93,19 @@ export default defineComponent({
|
|
|
// 切换音频播放
|
|
|
const onToggleAudio = () => {
|
|
|
if (audioRef.value.paused) {
|
|
|
- onInit(audioRef.value, canvasRef.value);
|
|
|
audioRef.value.play();
|
|
|
data.playState = 'play';
|
|
|
+ //
|
|
|
+ nextTick(() => {
|
|
|
+ // onInit(audioRef.value, canvasRef.value);
|
|
|
+ // setTimeout(() => {
|
|
|
+ // onInit(audioRef.value, canvasRef.value);
|
|
|
+ // }, 100);
|
|
|
+ // console.log(data.vudio, 'data.vudio');
|
|
|
+ // if (data.vudio) {
|
|
|
+ // data.vudio.dance();
|
|
|
+ // }
|
|
|
+ });
|
|
|
} else {
|
|
|
audioRef.value.pause();
|
|
|
data.playState = 'pause';
|
|
@@ -89,33 +113,56 @@ export default defineComponent({
|
|
|
};
|
|
|
|
|
|
const onInit = (audio: undefined, canvas: undefined) => {
|
|
|
- if (!data.vudio) {
|
|
|
- const rect = contetRef.value.getBoundingClientRect() || {
|
|
|
- width: 200,
|
|
|
- height: 200
|
|
|
- };
|
|
|
- data.vudio = new Vudio(audio, canvas, {
|
|
|
- effect: 'waveform',
|
|
|
- accuracy: 128,
|
|
|
- width: rect.width,
|
|
|
- height: rect.height,
|
|
|
- waveform: {
|
|
|
- maxHeight: 160,
|
|
|
- color: [
|
|
|
- [0, '#44D1FF'],
|
|
|
- [0.5, '#44D1FF'],
|
|
|
- [0.5, '#198CFE'],
|
|
|
- [1, '#198CFE']
|
|
|
- ],
|
|
|
- prettify: false
|
|
|
- }
|
|
|
- });
|
|
|
- data.vudio.dance();
|
|
|
+ if (!data.vudio && data.count > 1) {
|
|
|
+ console.log(data.vudio, 'data.vudio');
|
|
|
+ try {
|
|
|
+ const rect = contetRef.value.getBoundingClientRect() || {
|
|
|
+ width: 200,
|
|
|
+ height: 200
|
|
|
+ };
|
|
|
+
|
|
|
+ data.vudio = new Vudio(audio, canvas, {
|
|
|
+ effect: 'waveform',
|
|
|
+ accuracy: 128,
|
|
|
+ width: rect.width,
|
|
|
+ height: rect.height,
|
|
|
+ waveform: {
|
|
|
+ maxHeight: 160,
|
|
|
+ color: [
|
|
|
+ [0, '#44D1FF'],
|
|
|
+ [0.5, '#44D1FF'],
|
|
|
+ [0.5, '#198CFE'],
|
|
|
+ [1, '#198CFE']
|
|
|
+ ],
|
|
|
+ prettify: false
|
|
|
+ }
|
|
|
+ });
|
|
|
+ data.vudio.dance();
|
|
|
+ } catch (e) {
|
|
|
+ console.log(e, 'e');
|
|
|
+ }
|
|
|
+ } else {
|
|
|
}
|
|
|
};
|
|
|
/** 加载成功 */
|
|
|
const onLoadedmetadata = () => {
|
|
|
- data.duration = audioRef.value.duration;
|
|
|
+ data.duration = audioRef.value?.duration;
|
|
|
+ // onInit(audioRef.value, canvasRef.value);
|
|
|
+ if (props.item.autoPlay && audioRef.value && props.show) {
|
|
|
+ // data.vudio = null;
|
|
|
+ // data.count = 0;
|
|
|
+ onToggleAudio();
|
|
|
+ }
|
|
|
+
|
|
|
+ // if (audioRef.value) {
|
|
|
+ // audioRef.value.stop = () => {
|
|
|
+ // audioRef.value?.pause();
|
|
|
+ // };
|
|
|
+ // audioRef.value.onPlay = () => {
|
|
|
+ // audioRef.value?.play();
|
|
|
+ // onInit(audioRef.value, canvasRef.value);
|
|
|
+ // };
|
|
|
+ // }
|
|
|
};
|
|
|
|
|
|
/** 改变播放时间 */
|
|
@@ -172,10 +219,13 @@ export default defineComponent({
|
|
|
onLoadedmetadata={onLoadedmetadata}
|
|
|
onTimeupdate={() => {
|
|
|
if (data.timer && data.playState === 'pause') return;
|
|
|
-
|
|
|
+ if (data.count <= 1) {
|
|
|
+ data.count += 1;
|
|
|
+ onInit(audioRef.value, canvasRef.value);
|
|
|
+ }
|
|
|
// 开始拖动时也不能更新
|
|
|
if (data.dragStatus) return;
|
|
|
- data.currentTime = audioRef.value.currentTime;
|
|
|
+ data.currentTime = audioRef.value?.currentTime;
|
|
|
}}
|
|
|
onError={() => {
|
|
|
console.log('error');
|