慕课网electron写音乐播放器教程,代码跟随教程变动(十)
添加播放状态,首先是歌曲名称和时间
在index.html中添加
<div class="container fixed-bottom bg-white pb-4">
<hr/>
<div class="row my-2" id="player-status"> </div>
</div>
然后调用audio自带的歌曲加载完毕事件函数和当前播放时间函数
musicAudio.addEventListener('loadedmetadata', () =>{
//音乐文件加载完毕,开始渲染播放状态
renderPlayerHTML(currentTrack.filename, musicAudio.duration)//后面一个参数是获取歌曲长度,默认是以秒为单位,需要后续处理转化为分,秒的形式
})
musicAudio.addEventListener('timeupdate', () => {
//更新播放器状态
updataProgressHTML(musicAudio.currentTime)//获取当前播放时间
})
再编辑渲染播放状态函数和播放时间更新函数
const renderPlayerHTML = (name, duration) => {//渲染播放状态函数
const player = $('player-status')
const html = `<div class="col font-weight-bold">
正在播放:${name}
</div>
<div class="col">
<span id="current-seeker">00:00</span> / ${duration}
</div>`
player.innerHTML = html
}
const updataProgressHTML = (currentTime) => {
const seeker = $('current-seeker')
seeker.innerHTML = currentTime
}
到这里播放状态功能就已实现,但需要注意的是audio自带的歌曲长度和当前播放长度是以秒为单位,需要通过一定的算法转换为分秒的形式
exports.converDuration = (time) => {
//计算分钟
const minutes = '0' + Math.floor(time / 60);
const seconds = '0' + Math.floor(time - minutes * 60);
return minutes.substr(-2) + ':' + seconds.substr(-2)
}
然后开始制作进度条
向index.html中添加进度条
<div class="progress">
<div class="progress-bar bg-success" id="player-progress"role="progressbar" style="width: 0%;">0%</div>
</div>
重新编辑播放器更新时间函数
musicAudio.addEventListener('timeupdate', () => {
//更新播放器状态
updataProgressHTML(musicAudio.currentTime, musicAudio.duration)//获取当前播放时间
})
const updataProgressHTML = (currentTime, duration) => {
const seeker = $('current-seeker')
seeker.innerHTML = converDuration(currentTime)
//计算播放的百分比
const progress = Math.floor(currentTime / duration * 100)
const bar = $('player-progress')
bar.innerHTML = progress + '%'
bar.style.width = progress + '%'
}
慕课网electron写音乐播放器教程,代码跟随教程变动(十)的更多相关文章
- 基于jQuery虾米音乐播放器样式代码
分享一款基于jQuery虾米音乐播放器样式代码.这是一款基于jquery+html5实现的虾米音乐播放器源码下载.效果图如下: 在线预览 源码下载 实现的代码. html代码: <div c ...
- 微信小程序 写音乐播放器 slider组件 将value设置为0 真机测试滑块不能回到起点
最近在用微信小程序写一个音频播放页面,做时间进度的时候用到了slider插件,但是在自然播放完成,或者上/下切换的时候,将slider的value属性值设为0,开发工具上滑块会回到起点,有效.但是真机 ...
- Android实现网络音乐播放器
本文是一个简单的音乐播放器 布局代码 <?xml version="1.0" encoding="utf-8"?> <RelativeLayo ...
- android快捷简单的实现音乐播放器
自己做了一个相对完整的音乐播放器,现在把播放模块提取出来,分享给大家.音乐播放器基本功能都实现了的,可能有些BUG,希望谅解. 播放器功能如下: 1.暂停,播放 2.拖动条实现,快进,快退 3.歌词同 ...
- 基于jQuery仿QQ音乐播放器网页版代码
基于jQuery仿QQ音乐播放器网页版代码是一款黑色样式风格的网页QQ音乐播放器样式代码.效果图如下: 在线预览 源码下载 实现的代码. html代码: <div class="m ...
- [ 原创 ]学习笔记-做一个Android音乐播放器是遇到的一些困难
最近再做一个安卓的音乐播放器,是实验室里学长派的任务,我是在eclipse上进行开发的,由于没有android的基础,所以做起来困难重重. 首先是布局上的困难 1.layout里的控件属性不熟悉 2. ...
- 基于jplayer实现歌词同步的JS音乐播放器效果
分享一款基于jplayer实现歌词同步的JS音乐播放器效果.这是一款基于jQuery实现的音乐播放器功能代码.效果图如下: 在线预览 源码下载 实现的代码. html代码: <textare ...
- [MFC] MFC音乐播放器 傻瓜级教程 网络 搜索歌曲 下载
>目录< >——————————————————————< 1.建立工程 1.建立一个MFC工程,命名为Tao_Music 2.选择为基本对话框 3.包含Windows So ...
- android音乐播放器开发教程
android音乐播放器开发教程 Android扫描sd卡和系统文件 Android 关于录音文件的编解码 实现米聊 微信一类的录音上传的功能 android操作sdcard中的多媒体文件——音乐列表 ...
随机推荐
- oracle Transactional
从shutdown transactional命令发布起, 禁止建立任何新的oracle连接. 从shutdown transactional命令发布起,禁止启动任何新的事务. 一旦数据库上所有的活动 ...
- Effective Modern C++:03转向现代C++
07:在创建对象时注意区分()和{} 自C++11以来,指定初始化值的的方式包括使用小括号,等号,以及大括号: ); // initializer is in parentheses ; // ini ...
- SDUT-2107_图的深度遍历
数据结构实验之图论二:图的深度遍历 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 请定一个无向图,顶点编号从0到n-1 ...
- js错误处理Try-catch和throw
1.try-catch语句 Try{ //可能会导致错误的代码 }catch(error){ //在错误发生时怎么处理 } 例如: try{ window.someNonexistentFunct ...
- oracle函数 lag()和lead()
[语法] lag(EXPR,<OFFSET>,<DEFAULT>) LEAD(EXPR,<OFFSET>,<DEFAULT>) [功能]表示根据COL1 ...
- Java练习 SDUT-1171_保留整数
C语言实验--保留整数 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 输入一个字符串str1,把其中的连续非数字的字符 ...
- [C#] 如何分析stackoverflow等clr错误
有时候由于无限递归调用等代码错误,w3wp.exe会报错退出,原因是clr.exe出错了. 这种错误比较难分析,因为C#代码抓不住StackOverflowException等异常. 处理方法是:生成 ...
- Hadoop应用程序示例2
- 最新版本的ADT使用问题
昨天把androidsdk和adt更新到最新版本,android sdk r22版本. 更新完后原来的项目打包后出现第三方JAR包找不到,网上搜了半天终于找到问题所在: 新版本多了一个Android ...
- [C#] WebClient性能优化
WebClient缺省是为了安全和方便,不是为了性能.所以,当你打算做压力测试的时候,就会发现WebClient很慢. WebClient性能很差,主要原因有: 1.它缺省会使用IE的代理设置,而IE ...