Chodzi o zdarzenie ended elementu audio ( <audio> )
ended (Web Audio Event)
The ended event is fired when playback or streaming has stopped because the end of the media was reached or because no further data is available.
Przykład
<button id="button-play" class="button-play" disabled><span>‣</span></button>
.button-play span {
display: block;
transform: scale(2.5);
}
const play_list = [
{ 'name':'Radio Tune', 'url':'Radio%20Tune-SoundBible.com-1525681700.mp3' },
{ 'name':'Car Alarm', 'url':'Car%20Alarm-SoundBible.com-2096911689.mp3' },
{ 'name':'Train', 'url':'Train_Approach_n_Pass-Mike_Koenig-678807208.mp3' },
{ 'name':'Helicopter Pass', 'url':'Best_Helicopter_Pass-Mike_Koenig-1156203370.mp3' },
{ 'name':'Energyless robot', 'url':'Dying%20Robot-SoundBible.com-1721415199.mp3' }
];
const button_play = document.querySelector('#button-play'),
audio_player = new Audio(),
WEB_URL = 'https://soundbible.com/mp3/';
button_play.addEventListener('click', startPlay);
window.addEventListener('DOMContentLoaded', initializeAudio);
function initializeAudio() {
audio_player.onended = startPlay; // <-- TU
audio_player.setAttribute('data-index-form-playlist', -1);
button_play.removeAttribute('disabled');
}
function startPlay() {
const song_index = indexFromPlaylist();
audio_player.src = WEB_URL + play_list[song_index].url;
audio_player.play();
console.clear();
console.log('Odtwarzam: ' + play_list[song_index].name);
}
function indexFromPlaylist() {
let index = parseInt(audio_player.getAttribute('data-index-form-playlist')) + 1;
if (index >= play_list.length) index = 0;
audio_player.setAttribute('data-index-form-playlist', index);
return index;
}
jak to przerobić na Vue.js?
nie pracowałem (i nie pracuję) z vue, więc ciężko Mi coś doradzić, ale może "wygeneruj" za jego pomocą button-a, a resztę kodu do odtwarzania muzyki "podepnij" jak zwykły js.