單擊播放音頻檔案的藝術家影像時,我有一個 Web 應用程式。我對此很陌生。我在互聯網上找到了一些解決方案,但我無法做到。我想在另一個音頻開始時暫停當前播放的音頻。但它會繼續在后臺播放,但我想要的是暫停并從該點繼續播放。到目前為止,我無法做出這樣的改變。
function switchCase(key){
switch (key) {
case 'mozart-img':
var audio = new Audio("sounds/mozart.mp3")
audio.play();
break;
case 'beethoven-img':
var audio = new Audio("sounds/beethoven.mp3")
audio.play();
break;
case 'chopin-img':
var audio = new Audio("sounds/chopin.mp3")
audio.play();
break;
case 'schumann-img':
var audio = new Audio("sounds/schumann.mp3")
audio.play();
break;
default:
break;
}
}
uj5u.com熱心網友回復:
在這里使用 IIFE,所以不需要全域變數(除了switchCase你已經擁有的函式)
const switchCase = (function() {
let playing;
function stop() {
if (playing) {
playing.removeEventListener('ended', stop); //*
playing.pause();
playing = null;
}
}
return function (key){
stop();
switch (key) {
case 'mozart-img':
playing = new Audio("sounds/mozart.mp3");
break;
case 'beethoven-img':
playing = new Audio("sounds/beethoven.mp3");
break;
case 'chopin-img':
playing = new Audio("sounds/chopin.mp3");
break;
case 'schumann-img':
playing = new Audio("sounds/schumann.mp3");
break;
default:
break;
}
playing.play();
playing.addEventListener('ended', stop); //*
};
})();
所以,playing 持有當前正在播放的音頻物件——在創建一個新物件之前,只需停止當前正在播放的物件(如果存在的話)
添加了“結束”事件處理程式 - 可能有點矯枉過正,但只需洗掉帶有addEventListenerand的行removeEventListener(標有 //* )以擺脫可能多余的事件處理
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/433098.html
標籤:javascript dom 声音的
上一篇:用puppeteer抓取字典網站
