Dieser Artikel stellt hauptsächlich den Beispielcode des nativen JS-Musikplayers vor, der wie folgt mit Ihnen geteilt wird: RendernMusik-Player
Klassifizierung der Spielerattribute Klassifizieren Sie die Attribute und DOM-Elemente des Players entsprechend den Funktionen des Players und speichern Sie die Elemente und Attribute, die dieselbe Funktion implementieren, im selben Objekt, um die Verwaltung und Bedienung zu vereinfachen const control = { //Player-Steuerung play speichern: document.querySelector('#myplay'), ... Index: 2, //Die Nummer des aktuell abgespielten Songs ... } const audioFile = { //Songdateien und zugehörige Informationsdatei speichern: document.getElementsByTagName('audio')[0], aktuelleZeit: 0, Dauer: 0, } const lyric = { // Konfiguration der Liedtext-Anzeigeleiste ele: null, totalLyricRows: 0, aktuelle Zeilen: 0, Zeilenhöhe: 0, } const modeControl = { //Wiedergabemodus mode: ['sequentiell', 'random', 'single'], Index: 0 } const songInfo = { // DOM-Container zum Speichern von Songinformationen Name: document.querySelector('.song-name'), ... } Wiedergabesteuerung Funktion: Steuerung der Musikwiedergabe und -pause, des vorherigen Lieds, des nächsten Lieds, der Wiedergabebeendigung und der entsprechenden Symboländerung // Musik abspielen und pausieren, vorheriges und nächstes Lied steuern control.play.addEventListener('click',()=>{ Steuerung.istPlay = !Steuerung.istPlay; SpielerHandle(); } ); control.prev.addEventListener('click', vorherigerHandle); control.next.addEventListener('klicken', nächsterHandle); audioFile.file.addEventListener('beendet', nächsterHandle); Funktion SpielerHandle() { const spielen = Steuerung.spielen; Steuerung.istWiedergeben ? audioFile.file.play() : audioFile.file.pause(); if (Steuerung.istPlay) { //Musik abspielen, Symbol ändern und Animation abspielen play.classList.remove('songStop'); spielen.classList.add('songStart'); control.albumCover.classList.add('albumRotate'); control.albumCover.style.animationPlayState = "läuft"; } anders { //Musik anhalten, Symbol ändern und Animation anhalten … } } function prevHandle() { // Songs entsprechend dem Wiedergabemodus neu laden const modeIndex = modeControl.index; const songListLens = songList.Länge; if (modeIndex == 0) {//der Reihe nach abspielen let index = --control.index; Index == -1? (Index = SongListLens – 1): Index; control.index = index % songListLens; } sonst wenn (modeIndex == 1) {//Zufällige Wiedergabe const randomNum = Math.random() * (songListLens - 1); Steuerung.index = Math.round(Zufallszahl); } sonst wenn (modeIndex == 2) {//einzelnes Lied} neu laden(Songliste); } Funktion nächsterHandle() { const modeIndex = modeControl.index; const songListLens = songList.Länge; if (modeIndex == 0) {//Der Reihe nach abspielen control.index = ++control.index % songListLens; } sonst wenn (modeIndex == 1) {//Zufällige Wiedergabe const randomNum = Math.random() * (songListLens - 1); Steuerung.index = Math.round(Zufallszahl); } sonst wenn (modeIndex == 2) {//einzelnes Lied} neu laden(Songliste); } Steuerung des Wiedergabefortschrittsbalkens Funktion: Aktualisieren Sie den Wiedergabefortschritt in Echtzeit. Klicken Sie auf den Fortschrittsbalken, um den Fortschritt der Songwiedergabe anzupassen. // Der Wiedergabefortschritt wird in Echtzeit aktualisiert audioFile.file.addEventListener('timeupdate', lyricAndProgressMove); // Fortschritt durch Ziehen anpassen control.progressDot.addEventListener('click', adjustProgressByDrag); // Fortschritt durch Klicken anpassen control.progressWrap.addEventListener('click', adjustProgressByClick); Der Wiedergabefortschritt wird in Echtzeit aktualisiert: durch Ändern der Position oder Breite des entsprechenden DOM-Elements Funktion lyricAndProgressMove() { const audio = Audiodatei.Datei; const controlIndex = steuerung.index; // Songinformationen initialisieren const songLyricItem = document.getElementsByClassName('song-lyric-item'); wenn (songLyricItem.length == 0) returnieren; Lassen Sie aktuelle Zeit = audioFile.aktuelle Zeit = Math.round(audio.aktuelle Zeit); let Dauer = audioFile.duration = Math.round(audio.duration); //Bewegung des Fortschrittsbalkens const progressWrapWidth = control.progressWrap.offsetWidth; const currentBarPOS = aktuelleZeit / Dauer * 100; control.progressBar.style.width = `${currentBarPOS.toFixed(2)}%`; const currentDotPOS = Math.round(currentTime / Dauer * progressWrapWidth); Steuerung.progressDot.style.left = `${currentDotPOS}px`; songInfo.currentTimeSpan.innerText = formatTime(aktuelleZeit); } Ziehen, um den Fortschritt anzupassen: Bewegen Sie den Fortschrittsbalken durch Ziehen und aktualisieren Sie gleichzeitig den Fortschritt der Songwiedergabe Funktion adjustProgressByDrag() { const fragBox = control.progressDot; const progressWrap = Steuerung.progressWrap ziehen(fragBox, progressWrap) } Funktion ziehen(fragBox, umbrechen) { const wrapWidth = wrap.offsetWidth; const wrapLeft = getOffsetLeft(wrap); Funktion dragMove(e) { lass disX = e.pageX - wrapLeft; changeProgressBarPos(disX, WrapWidth) } fragBox.addEventListener('mousedown', () => { //Ziehvorgang//Klicken, um zur einfachen Bedienung zu vergrößern fragBox.style.width = `14px`; fragBox.style.height = `14px`; fragBox.style.top = `-7px`; document.addEventListener('mousemove', dragMove); document.addEventListener('mouseup', () => { document.removeEventListener('mousemove', dragMove); fragBox.style.width = `10px`;fragBox.style.height = `10px`;fragBox.style.top = `-4px`; }) }); } function changeProgressBarPos(disX, wrapWidth) { //Statusaktualisierung des Fortschrittsbalkens const audio = audioFile.file const Dauer = Audiodatei.Dauer let dotPos let barPos wenn (disX < 0) { PunktPos = -4 barPos = 0 audio.aktuelleZeit = 0 } sonst wenn (disX > 0 und disX < WrapWidth) { dotPos = disX Balkenpositionen = 100 * (disX / WrapWidth) audio.currentTime = Dauer * (disX / WrapWidth) } anders { Punktpositionen = WrapWidth - 4 barPos = 100 audio.currentTime = Dauer } Steuerung.progressDot.style.left = `${dotPos}px` control.progressBar.style.width = `${barPos}%` } Klicken Sie auf den Fortschrittsbalken, um ihn anzupassen: Klicken Sie auf den Fortschrittsbalken und aktualisieren Sie den Fortschritt der Songwiedergabe synchron Funktion adjustProgressByClick(e) { const wrap = control.progressWrap; const wrapWidth = wrap.offsetWidth; const wrapLeft = getOffsetLeft(wrap); const disX = e.pageX - wrapLeft; changeProgressBarPos(disX, WrapWidth) } Anzeige und Hervorhebung von Liedtexten Funktion: Aktualisierung der Liedtextanzeige in Echtzeit entsprechend dem Wiedergabefortschritt und Hervorhebung des aktuellen Liedtexts (durch Hinzufügen von Stilen) // Echtzeitaktualisierung der Liedtextanzeige audioFile.file.addEventListener('timeupdate', lyricAndProgressMove); Funktion lyricAndProgressMove() { const audio = Audiodatei.Datei; const controlIndex = steuerung.index; const songLyricItem = document.getElementsByClassName('song-lyric-Item'); wenn (songLyricItem.length == 0) returnieren; Lassen Sie aktuelle Zeit = audioFile.aktuelle Zeit = Math.round(audio.aktuelle Zeit); let Dauer = audioFile.duration = Math.round(audio.duration); let totalLyricRows = lyric.totalLyricRows = songLyricItem.length; let LyricEle = lyric.ele = songLyricItem[0]; let rowsHeight = lyric.rowsHeight = LyricEle und LyricEle.offsetHeight; //Songtext-Bewegung lrcs[controlIndex].lyric.forEach((item, index) => { wenn (aktuelleZeit === Artikel.Zeit) { lyric.currentRows = Index; songLyricItem[index].classList.add('song-lyric-item-active'); index > 0 && songLyricItem[index - 1].classList.remove('song-lyric-item-active'); wenn (Index > 5 und Index < totalLyricRows - 5) { songInfo.lyricWrap.scrollTo(0, `${rowsHeight * (index - 5)}`) } } }) } Wiedergabemodus-Einstellungen Funktion: Klicken Sie, um in den Wiedergabemodus zu springen und das entsprechende Symbol zu ändern // Wiedergabemodus einstellen control.mode.addEventListener('click', changePlayMode); Funktion changePlayMode() { modeControl.index = ++modeControl.index % 3; const mode = Steuerungsmodus; modeControl.index === 0 ? mode.setAttribute("Klasse", "playerIcon songCycleOrder") : modeControl.index === 1 ? mode.setAttribute("Klasse", "PlayerIcon SongCycleRandom") : mode.setAttribute("Klasse", "playerIcon songCycleOnly") } Projektvorschau Codeadresse: https://github.com/hcm083214/audio-player Damit ist dieser Artikel über den Beispielcode zur Implementierung eines Musikplayers mit nativem JS abgeschlossen. Weitere Informationen zum JS-Musikplayer finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: So richten Sie ein Bereitstellungsprojekt unter einem Linux-System ein
>>: Super einfache QPS-Statistikmethode (empfohlen)
Inhaltsverzeichnis Wirkungsdemonstration:Hauptimp...
Inhaltsverzeichnis Klassenkomponente Funktionale ...
Griechische Buchstaben sind eine sehr häufig verw...
Der Pseudoklassenselektor :not kann Elemente filt...
Inhaltsverzeichnis 1.1Tinyint-Typbeschreibung 1.2...
Als ich vor einiger Zeit an einer kleinen Funktio...
1. Laden Sie das Tomcat-Image herunter Docker zie...
Nach einem abnormalen Herunterfahren von VMware w...
Verwenden Sie JOIN anstelle von Unterabfragen MyS...
Inhaltsverzeichnis 1. Funktionsbeschreibung 2. Üb...
Hinweis: Die derzeit beliebtesten Front-End-Frame...
Inhaltsverzeichnis Was ist ein Auslöser Erstellen...
Inhaltsverzeichnis MySQL Truncate-Verwendung 1. T...
a- und href-Attribute HTML verwendet <a> zu...
Vorwort Kürzlich wurden Daten online falsch bearb...