JS学习笔记(6)--音乐播放器
说明(2017.3.15):
1. lrc.js里面存储LRC歌词的格式的数组,获取里面的时间轴,转为秒数。
2. 通过audio.currentTime属性,setinterval每秒获取歌曲播放的秒数。
3. 将两个时间比大小,如果“歌曲播放时间”>“歌词时间”,就输出这句歌词。
4. 补充需求:
(1)需要把歌词补充完整
(2)不是在控制台输出,直接在页面输出
(3)增加播放列表
music.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<audio src="Taylor Swift - Love Story.mp3" id="audio" autoplay="autoplay" controls="controls" preload="auto">
您的浏览器不支持audio属性,请更换浏览器再进行浏览。
</audio>
<button id="btnTime">time</button>
</body>
<script src="lrc.js"></script>
<script type="text/javascript">
var text = "[00:15.80]We were both young when I first saw you\
[00:19.74]I closed my eyes and the flashback starts\
[00:23.26]I'm standing there";
var audio = document.getElementById("audio");
btnTime.onclick = function(){
var timeLrc = getTime();
console.log(timeLrc);
}; var getTime = function(){
// 不需要这个函数了,直接输出audio.currentTime这个时间进行比大小就可以
// 获取03:14:33这种格式的当前播放时间
var timeNow = audio.currentTime
// console.log(timeNow);
// 获取分钟数
var timeMin = String(Math.floor(timeNow/60));
// 如果分钟数是1位,前面加个0
timeMin = timeMin.length<2 ? "0"+timeMin : timeMin;
// console.log(timeMin);
var timeSec = String(Math.floor(timeNow%60));
timeSec = timeSec.length<2 ? "0"+timeSec : timeSec;
// console.log(timeSec);
var timeMil = String(timeNow);
timeMil = timeMil.substr(timeMil.indexOf('.')+1,2)
// console.log(timeMil);
var timeLrc = timeMin + ":" + timeSec + "." + timeMil; return timeLrc;
};
var getLrcTime = function(i){
// 获取歌词里的每句的时间
var lrcTime = loveStory[i].substr(1,8);
// 分钟转数字可以去掉前面的0
lrcTimeMin = parseInt(lrcTime.split(":")[0]);
// 虽然末尾有0,不过要转成数字比大小
lrcTimeSec = parseFloat(lrcTime.split(":")[1]);
lrcTime = lrcTimeMin*60+lrcTimeSec;
// console.log(lrcTimeMin);
// console.log(lrcTimeSec);
// console.log(lrcTime);
return lrcTime;
};
// getLrcTime(); setInterval(function(){
// 获取lrc.js文件中的歌词,每秒刷新一下,获取播放时间,然后跟歌词里的时间比对,如果播放时间大于歌词时间,就显示歌词。 var timeNow = audio.currentTime for(var i = 0; i < loveStory.length; i++){
var lrcTime = getLrcTime(i);
// console.log(lrcTime);
var lrcWord = loveStory[i].substr(10,loveStory[i].length);
if(timeNow > lrcTime){
console.log(lrcTime);
console.log(lrcWord);
loveStory.splice(i,1);
}else{ }
}
// if (!audio.paused) {
// console.log(playTime.substr(0,5));
// // console.log(playTime);
// }
},1000);
</script>
</html>
lrc.js
var loveStory = [
"[00:15.80]We were both young when I first saw you", "[00:19.74]I closed my eyes and the flashback starts", "[00:23.26]I'm standing there", "[00:26.95]On a balcony in summer air", "[00:32.14]See the lights see the party the ball gowns", "[00:35.87]I see you make your way through the crowd", "[00:39.29]And say hello", "[00:43.38]Little did I know", "[00:48.07]That you were Romeo you were throwing pebbles", "[00:51.72]And my daddy said stay away from Juliet", "[00:55.38]And I was crying on the staircase", "[00:58.28]Begging you please don't go", "[01:02.74]And I said", "[01:04.25]Romeo take me somewhere we can be alone", "[01:08.38]I'll be waiting all there's left to do is run"
];
JS学习笔记(6)--音乐播放器的更多相关文章
- 使用 原生js 制作插件 (javaScript音乐播放器)
1.引用页面 index.html <!DOCTYPE html> <html lang="en"> <head> <meta chars ...
- 自定义css样式结合js控制audio做音乐播放器
最近工作需求需要播放预览一些音乐资源,所以自己写了个控制audio的音乐播放器. 实现的原理主要是通过js调整audio的对象属性及对象方法来进行控制: 1.通过play().pause()来控制音乐 ...
- Vuejs---《Vue.js + Node.js-构建音乐播放器新玩法-video》
官方文档:http://vuejs.org/v2/guide/syntax.html 中文文档: https://cn.vuejs.org/v2/guide/syntax.html https://g ...
- 原生JS实现音乐播放器!
前 言 最近在复习JS,觉得音乐播放器是个挺有意思的东西,今天就来用我们最原生的JS写一个小小的音乐播放器~ 主要功能: 1.支持循环.随机播放 2.在播放的同时支持图片的 ...
- JS实现音乐播放器
JS实现音乐播放器 前 言 最近在复习JS,觉得音乐播放器是个挺有意思的东西,今天就来用我们最原生的JS写一个小小的音乐播放器~ 主要功能: 1.支持循环.随机播放 2.在播 ...
- Android(java)学习笔记234: 服务(service)之音乐播放器
1.我们播放音乐,希望在后台长期运行,不希望因为内存不足等等原因,从而导致被gc回收,音乐播放终止,所以我们这里使用服务Service创建一个音乐播放器. 2.创建一个音乐播放器项目(使用服务) (1 ...
- [ 原创 ]学习笔记-做一个Android音乐播放器是遇到的一些困难
最近再做一个安卓的音乐播放器,是实验室里学长派的任务,我是在eclipse上进行开发的,由于没有android的基础,所以做起来困难重重. 首先是布局上的困难 1.layout里的控件属性不熟悉 2. ...
- Android学习笔记_24_多媒体MediaPlayer对象之音乐播放器与SoundPool声音池
一.MediaPlayer对象常用方法介绍: MediaPlayer mediaPlayer = new MediaPlayer(); if (mediaPlayer.isPlaying()) { m ...
- Android(java)学习笔记177: 服务(service)之音乐播放器
1.我们播放音乐,希望在后台长期运行,不希望因为内存不足等等原因,从而导致被gc回收,音乐播放终止,所以我们这里使用服务Service创建一个音乐播放器. 2.创建一个音乐播放器项目(使用服务) (1 ...
- 吴裕雄--天生自然python学习笔记:python 用pygame模块制作 MP3 音乐播放器
利用 music 对象来制作一个 MP3 音乐播放器 . 应用程序总览 从歌曲清单中选择指定的歌曲,单击“播放”按钮可开始播放, 在播放 xxx 歌曲”的信息. 歌曲播放的过程中,可以暂停.停止,也可 ...
随机推荐
- WINDOWS操作系统中可以允许最大的线程数
默认情况下,一个线程的栈要预留1M的内存空间 而一个进程中可用的内存空间只有2G,所以理论上一个进程中最多可以开2048个线程 但是内存当然不可能完全拿来作线程的栈,所以实际数目要比这个值要小. ...
- Linux ssh服务开启秘钥和密码认证
问题描述: 实现Linux秘钥和密码同时认证 解决方案: vim /etc/ssh/sshd_config 基本参数: PermitRootLogin yes #允许root认证登录 Password ...
- 微信小程序项目实战之天气预报
概述 微信小程序项目实战之天气预报 详细 代码下载:http://www.demodashi.com/demo/10634.html 一.准备工作 1.注册微信小程序 2.注册和风天气账号 3.注册百 ...
- 【laravel5.4】Baum无限极分类和collect助手函数、transform()中间件(转换数据)方法使用
1.目的,无限极分类 /* * getdepartment:获取[当前登录用户对应公司的所有有效部门] * DB::table ==>返回查询构造器结果,不会返回一个collect实例 * 而 ...
- [转载]在rhel 6 x86_64 上安装oracle 11g xe
原文地址:在rhel 6 x86_64 上安装oracle 11g xe作者:pccom Oracle 11g xe for linux目前只有x86_64 版本,没有i386, i686 版本,如果 ...
- laravel-v5.1分页并带参数
控制器的代码中
- Report_Report Builder的一些基本概念(概念)
2014-05-31 Created By BaoXinjian
- 定时器quartz工具类
一.gradle配置 // https://mvnrepository.com/artifact/org.quartz-scheduler/quartz compile group: 'org.qua ...
- 配置 Sliverlight 跨域访问策略
Silverlight程序在访问非本域资源时,需要在相应的域根目录下建立跨域访问策略文件才能进行访问. 文件名:clientaccesspolicy.xml 文件内容: <?xml versio ...
- QWidget子窗口中setStyleSheet无效,解决方法
继承 QWidget setStyleSheet无效,解决方法. 发现 继承自QWidget的自定义类 ,使用setStyleSheet无效, 如果删除头文件中的 Q_OBJECT,setStyleS ...