DIAS SEM TRETA

Caminho de navegação do fórum - Você está aqui:Disputatio TheologicaHistórico de post: marins
Please or Cadastrar to create posts and topics.

Histórico de post: marins

É isso que vcs batistas não entendem, e não entendem pq não querem entender!
"&qu
; // Lista embaralhada que será usada na reprodução let shuffledPlaylist = [...originalPlaylist]; let currentTrack = 0; const player = document.getElementById('player'); const playPauseBtn = document.getElementById('play-pause-btn'); const nextTrackBtn = document.getElementById('next-track-btn'); const volumeToggleBtn = document.getElementById('volume-toggle-btn'); const volumeSlider = document.getElementById('volume-slider'); // --- Função para Embaralhar a Lista (Algoritmo Fisher-Yates) --- function shuffleArray(array) { for (let i = array.length - 1; i > 0; i--) { const j = Math.floor(Math.random() * (i + 1)); [array[i], array[j]] = [array[j], array[i]]; } } // --- Funções da Playlist --- // Inicializa o player: embaralha e define a primeira música function initializePlayer() { shuffleArray(shuffledPlaylist); // Embaralha a playlist logo no início player.src = shuffledPlaylist[currentTrack]; player.volume = 0.7; // Define o volume inicial volumeSlider.value = player.volume; // Tenta iniciar a reprodução com Autoplay player.play().catch(error => { console.log("Autoplay bloqueado. O usuário precisa interagir."); updatePlayPauseButton(false); }); } // Passa para a próxima música (aleatória) function playNextTrack() { currentTrack++; // Se todas as músicas já tocaram, re-embaralha e começa do zero if (currentTrack >= shuffledPlaylist.length) { currentTrack = 0; shuffleArray(shuffledPlaylist); console.log("Playlist re-embaralhada."); } // A música a ser tocada é a próxima na lista embaralhada player.src = shuffledPlaylist[currentTrack]; player.play(); updatePlayPauseButton(true); // Oculta o slider de volume (opcional) volumeSlider.style.display = 'none'; } // --- Funções dos Controles e Event Listeners (Mantidos do seu código) --- // Atualiza o ícone do botão Play/Pause function updatePlayPauseButton(isPlaying) { const icon = playPauseBtn.querySelector('span'); if (isPlaying) { icon.className = 'fas fa-pause'; } else { icon.className = 'fas fa-play'; } } // 1. Evento para alternar Play/Pause playPauseBtn.addEventListener('click', () => { if (player.paused) { player.play(); } else { player.pause(); } }); // 2. Evento para Próxima Música (agora aleatória) nextTrackBtn.addEventListener('click', playNextTrack); // 3. Evento para mostrar/ocultar o controle de volume volumeToggleBtn.addEventListener('click', () => { const isHidden = volumeSlider.style.display === 'none'; volumeSlider.style.display = isHidden ? 'block' : 'none'; }); // 4. Oculta o slider se clicar fora dele document.addEventListener('click', (event) => { const isClickInsideControls = volumeToggleBtn.contains(event.target) || volumeSlider.contains(event.target) || playPauseBtn.contains(event.target) || nextTrackBtn.contains(event.target); if (!isClickInsideControls) { volumeSlider.style.display = 'none'; } }); // 5. Evento para controlar o volume volumeSlider.addEventListener('input', (e) => { player.volume = e.target.value; }); // 6. Atualiza o botão quando a música começa a tocar player.addEventListener('play', () => { updatePlayPauseButton(true); }); // 7. Atualiza o botão quando a música é pausada player.addEventListener('pause', () => { updatePlayPauseButton(false); }); // 8. Quando a música termina, toca a próxima da playlist (Aleatoriamente) player.addEventListener('ended', playNextTrack); // Inicia o player initializePlayer();

© Orlando Terceiro
Todos os direitos reservados