广告
返回顶部
首页 > 资讯 > 精选 >使用JavaScript编写一个音乐播放器
  • 229
分享到

使用JavaScript编写一个音乐播放器

2023-06-06 13:06:52 229人浏览 独家记忆
摘要

这篇文章主要介绍了使用javascript编写一个音乐播放器,此处通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考价值,需要的朋友可以参考下:JavaScript是什么JavaScript是一种直译式的脚本语言,其解释器被

这篇文章主要介绍了使用javascript编写一个音乐播放器,此处通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考价值,需要的朋友可以参考下:

JavaScript是什么

JavaScript是一种直译式的脚本语言,其解释器被称为JavaScript引擎,是浏览器的一部分,JavaScript是被广泛用于客户端的脚本语言,最早是在html网页上使用,用来给HTML网页增加动态功能。

音乐播放器

  • 播放控制

  • 播放进度条控制

  • 歌词显示及高亮

  • 播放模式设置

播放器属性归类

按照播放器的功能划分,对播放器的属性和DOM元素归类,实现同一功能的元素和属性保存在同一对象中,便于管理和操作

const control = { //存放播放器控制  play: document.querySelector('#myplay'), ...  index: 2,//当前播放歌曲序号 ...}const audioFile = { //存放歌曲文件及相关信息  file: document.getElementsByTagName('audio')[0],  currentTime: 0,  duration: 0,}const lyric = { // 歌词显示栏配置  ele: null,  totalLyricRows: 0,  currentRows: 0,  rowsHeight: 0,}const modeControl = { //播放模式  mode: ['顺序', '随机', '单曲'],  index: 0}const songInfo = { // 存放歌曲信息的DOM容器  name: document.querySelector('.song-name'), ...}

播放控制

功能:控制音乐的播放和暂停,上一首,下一首,播放完成及相应图标修改
audio所用api:audio.play() 和 audio.pause()和audio ended事件

// 音乐的播放和暂停,上一首,下一首控制control.play.addEventListener('click',()=>{  control.isPlay = !control.isPlay;  playerHandle();} );control.prev.addEventListener('click', prevHandle);control.next.addEventListener('click', nextHandle);audioFile.file.addEventListener('ended', nextHandle);function playerHandle() {  const play = control.play;  control.isPlay ? audioFile.file.play() : audioFile.file.pause();  if (control.isPlay) { //音乐播放,更改图标及开启播放动画    play.classList.remove('songStop');    play.classList.add('songStart');    control.albumCover.classList.add('albumRotate');    control.albumCover.style.animationPlayState = 'running';  } else {    //音乐暂停,更改图标及暂停播放动画 ...  }}function prevHandle() {  // 根据播放模式重新加载歌曲  const modeIndex = modeControl.index;  const songListLens = songList.length;  if (modeIndex == 0) {//顺序播放    let index = --control.index;    index == -1 ? (index = songListLens - 1) : index;    control.index = index % songListLens;  } else if (modeIndex == 1) {//随机播放    const randomNum = Math.random() * (songListLens - 1);    control.index = Math.round(randomNum);  } else if (modeIndex == 2) {//单曲  }  reload(songList);}function nextHandle() {  const modeIndex = modeControl.index;  const songListLens = songList.length;  if (modeIndex == 0) {//顺序播放    control.index = ++control.index % songListLens;  } else if (modeIndex == 1) {//随机播放    const randomNum = Math.random() * (songListLens - 1);    control.index = Math.round(randomNum);  } else if (modeIndex == 2) {//单曲  }  reload(songList);}

播放进度条控制

功能:实时更新播放进度,点击进度条调整歌曲播放进度
audio所用API:audio timeupdate事件,audio.currentTime

// 播放进度实时更新audioFile.file.addEventListener('timeupdate', lyricAndProgreSSMove);// 通过拖拽调整进度control.progressDot.addEventListener('click', adjustProgressByDrag);// 通过点击调整进度control.progressWrap.addEventListener('click', adjustProgressByClick);

播放进度实时更新:通过修改相应DOM元素的位置或者宽度进行修改

function lyricAndProgressMove() {  const audio = audioFile.file;  const controlIndex = control.index; // 歌曲信息初始化  const songLyricItem = document.getElementsByClassName('song-lyric-item');  if (songLyricItem.length == 0) return;  let currentTime = audioFile.currentTime = Math.round(audio.currentTime);  let duration = audioFile.duration = Math.round(audio.duration);  //进度条移动  const progressWrapWidth = control.progressWrap.offsetWidth;  const currentBarPOS = currentTime / duration * 100;  control.progressBar.style.width = `${currentBarPOS.toFixed(2)}%`;  const currentDotPOS = Math.round(currentTime / duration * progressWrapWidth);  control.progressDot.style.left = `${currentDotPOS}px`;  songInfo.currentTimeSpan.innerText = fORMatTime(currentTime);}

拖拽调整进度:通过拖拽移动进度条,并且同步更新歌曲播放进度

function adjustProgressByDrag() {  const fragBox = control.progressDot;  const progressWrap = control.progressWrap  drag(fragBox, progressWrap)}function drag(fragBox, wrap) {  const wrapWidth = wrap.offsetWidth;  const wrapLeft = getOffsetLeft(wrap);  function dragMove(e) {    let disX = e.pageX - wrapLeft;    changeProgressBarPos(disX, wrapWidth)  }  fragBox.addEventListener('mousedown', () => { //拖拽操作    //点击放大方便操作    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) { //进度条状态更新  const audio = audioFile.file  const duration = audioFile.duration  let dotPos  let barPos  if (disX < 0) {    dotPos = -4    barPos = 0    audio.currentTime = 0  } else if (disX > 0 && disX < wrapWidth) {    dotPos = disX    barPos = 100 * (disX / wrapWidth)    audio.currentTime = duration * (disX / wrapWidth)  } else {    dotPos = wrapWidth - 4    barPos = 100    audio.currentTime = duration  }  control.progressDot.style.left = `${dotPos}px`  control.progressBar.style.width = `${barPos}%`}

点击进度条调整:通过点击进度条,并且同步更新歌曲播放进度

function adjustProgressByClick(e) {  const wrap = control.progressWrap;  const wrapWidth = wrap.offsetWidth;  const wrapLeft = getOffsetLeft(wrap);  const disX = e.pageX - wrapLeft;  changeProgressBarPos(disX, wrapWidth)}

歌词显示及高亮

功能:根据播放进度,实时更新歌词显示,并高亮当前歌词(通过添加样式)
audio所用API:audio timeupdate事件,audio.currentTime

// 歌词显示实时更新audioFile.file.addEventListener('timeupdate', lyricAndProgressMove);function lyricAndProgressMove() {  const audio = audioFile.file;  const controlIndex = control.index;  const songLyricItem = document.getElementsByClassName('song-lyric-item');  if (songLyricItem.length == 0) return;  let currentTime = audioFile.currentTime = Math.round(audio.currentTime);  let duration = audioFile.duration = Math.round(audio.duration);  let totalLyricRows = lyric.totalLyricRows = songLyricItem.length;  let LyricEle = lyric.ele = songLyricItem[0];  let rowsHeight = lyric.rowsHeight = LyricEle && LyricEle.offsetHeight;  //歌词移动  lrcs[controlIndex].lyric.forEach((item, index) => {    if (currentTime === item.time) {      lyric.currentRows = index;      songLyricItem[index].classList.add('song-lyric-item-active');      index > 0 && songLyricItem[index - 1].classList.remove('song-lyric-item-active');      if (index > 5 && index < totalLyricRows - 5) {        songInfo.lyricWrap.scrollTo(0, `${rowsHeight * (index - 5)}`)      }    }  })}

播放模式设置

功能:点击跳转播放模式,并修改相应图标
audio所用API:无

// 播放模式设置control.mode.addEventListener('click', changePlayMode);function changePlayMode() {  modeControl.index = ++modeControl.index % 3;  const mode = control.mode;  modeControl.index === 0 ?    mode.setAttribute("class", "playerIcon sonGCycleOrder") :    modeControl.index === 1 ?      mode.setAttribute("class", "playerIcon songCycleRandom ") :      mode.setAttribute("class", "playerIcon songCycleOnly")}

到此这篇关于使用JavaScript编写一个音乐播放器的文章就介绍到这了,更多相关使用JavaScript编写一个音乐播放器的内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 使用JavaScript编写一个音乐播放器

本文链接: https://www.lsjlt.com/news/247164.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 使用JavaScript编写一个音乐播放器
    这篇文章主要介绍了使用JavaScript编写一个音乐播放器,此处通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考价值,需要的朋友可以参考下:JavaScript是什么JavaScript是一种直译式的脚本语言,其解释器被...
    99+
    2023-06-06
  • 利用java编写一个简单的音乐播放器
    今天就跟大家聊聊有关利用java编写一个简单的音乐播放器,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。具体内容如下源码:package baidu;import java.awt.*...
    99+
    2023-05-31
    java ava
  • 利用Android怎么编写一个本地音乐播放器
    利用Android怎么编写一个本地音乐播放器?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。音乐播放需要调用service,在此,只是简单梳理播放流程。public class ...
    99+
    2023-05-31
    android roi
  • 利用Python编写本地音乐播放器
    先上完整代码: 修改文件夹路径即可运行 # -*- encoding: utf-8 -*- ''' @Description:       : @Date     :2022/03/...
    99+
    2022-11-13
  • 基于JavaScript实现一个月饼音乐播放器
    目录前言页面布局页面背景左侧列表中间播放器右侧歌词部分总结前言 事情的经过是这样的,媳妇中秋发了一盒月饼,里面还有一个小蓝牙音响,她说如果这个音响是个月饼造型之类的是不是更能体现出中...
    99+
    2022-11-13
  • 利用Android开发一个音乐播放器
    本篇文章为大家展示了利用Android开发一个音乐播放器,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。读取本地音乐文件源代码:import android.media.MediaPlayer;imp...
    99+
    2023-05-31
    android roi
  • 一个简单的Java音乐播放器
    本文实例为大家分享了Java音乐播放器展示的具体代码,供大家参考,具体内容如下package KKMusic; import java.applet.Applet; import java.applet.AudioClip; import ...
    99+
    2023-05-31
    java 播放器 ava
  • 如何利用Python编写本地音乐播放器
    这篇文章主要为大家展示了“如何利用Python编写本地音乐播放器”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何利用Python编写本地音乐播放器”这篇文章吧。先上完整代码:修改文件夹路径即可...
    99+
    2023-06-29
  • Python制作一个多功能音乐播放器
    目录一、制作播放器的思路二、制作播放器知识点和所需模块三、播放器的代码展示一、制作播放器的思路 制作一个多功能音乐播放器的思路 确定播放器的需求和功能,例如支持哪些音频格式、播放列表...
    99+
    2023-03-20
    Python 多功能音乐播放器 Pytho 音乐播放器
  • 使用java怎么制作一个音乐播放器功能
    这期内容当中小编将会给大家带来有关使用java怎么制作一个音乐播放器功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。具体内容如下package baidu;import java.awt.*;impor...
    99+
    2023-05-31
    java ava
  • 怎么在c#中使用winform制作一个音乐播放器
    这篇文章将为大家详细讲解有关怎么在c#中使用winform制作一个音乐播放器,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。AxWindowsMediaPlayer的方法1 首先新建一个页面 ...
    99+
    2023-06-14
  • 怎么使用Python制作一个多功能音乐播放器
    这篇文章主要介绍了怎么使用Python制作一个多功能音乐播放器的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么使用Python制作一个多功能音乐播放器文章都会有所收获,下面我们一起来看看吧。一、制作播放器的思...
    99+
    2023-07-05
  • 使用android如何制作一个多媒体音乐播放器
    使用android如何制作一个多媒体音乐播放器?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。首先,在AndroidManifest.xml中配置权限 <!-- ...
    99+
    2023-05-31
    android roi
  • 在Java项目中使用 swing制作一个音乐播放器
    这期内容当中小编将会给大家带来有关在Java项目中使用 swing制作一个音乐播放器,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。实现代码: package com.baiting;import...
    99+
    2023-05-31
    java swing
  • 如何在Android中实现一个音乐播放器
    如何在Android中实现一个音乐播放器?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。实现过程导入项目所需的音乐文件、图标、背景等创建一个raw文件夹,将音乐文...
    99+
    2023-06-15
  • HTML怎么制作一个简洁的音乐播放器
    这篇文章主要讲解了“HTML怎么制作一个简洁的音乐播放器”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“HTML怎么制作一个简洁的音乐播放器”吧!   这个...
    99+
    2022-10-19
  • 怎么在HTML5页面中实现一个音乐播放器
    这篇文章给大家介绍怎么在HTML5页面中实现一个音乐播放器,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。<audio id="music1">浏览器不支持audio标签<...
    99+
    2023-06-09
  • Ubuntu如何使用音乐播放器Steam Music
    本篇内容主要讲解“Ubuntu如何使用音乐播放器Steam Music”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Ubuntu如何使用音乐播放器Steam Music”吧!  使用Steam ...
    99+
    2023-06-13
  • 怎么使用qt制作音乐播放器
    要使用Qt制作音乐播放器,您可以按照以下步骤进行:1. 首先,确保已经安装了Qt开发环境。您可以从Qt官方网站上下载并安装Qt,确保...
    99+
    2023-08-09
    qt
  • Android开发中怎么实现一个音乐播放器功能
    Android开发中怎么实现一个音乐播放器功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。具体实现首先是布局文件中添加了如下代码,这些代码就是实现控制台的,给整体设置了一...
    99+
    2023-05-31
    android roi
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作