好长时间以来,自己就有个想法为自己写一个音乐播放器小程序,以方便自己的使用,找网上的好多API,找不到,想抓接口,好多大厂都用了加密。结果自己仅仅整了点本地的数据。
只介绍一些具体的方法:
// 解码>>中文 reconvert: function (str) { str = str.replace(/(\\u)(\w{1,4})/gi, function ($0) { return (String.fromCharCode(parseInt((escape($0).replace(/(%5Cu)(\w{1,4})/g, "$2")), 16))); }); str = str.replace(/(&#x)(\w{1,4});/gi, function ($0) { return String.fromCharCode(parseInt(escape($0).replace(/(%26%23x)(\w{1,4})(%3B)/g, "$2"), 16)); }); str = str.replace(/(&#)(\d{1,6});/gi, function ($0) { return String.fromCharCode(parseInt(escape($0).replace(/(%26%23)(\d{1,6})(%3B)/g, "$2"))); }); return str; }, // 解析歌词的方法 parseLyric: function (lrc) { var lyrics = lrc.split("\n"); var lrcObj = {}; for (var i = 0; i < lyrics.length; i++) { var lyric = decodeURIComponent(lyrics[i]); var timeReg = /\[\d*:\d*((\.|\:)\d*)*\]/g; var timeRegExpArr = lyric.match(timeReg); if (!timeRegExpArr) continue; var clause = lyric.replace(timeReg, ''); if (clause.length > 0) { for (var k = 0, h = timeRegExpArr.length; k < h; k++) { var t = timeRegExpArr[k]; var min = Number(String(t.match(/\[\d*/i)).slice(1)), sec = Number(String(t.match(/\:\d*/i)).slice(1)); var time = min * 60 + sec; lrcObj[time] = clause; } } } return lrcObj; }, // 转换时间格式 timeToString: function (duration) { var str = ''; var minute = parseInt(duration / 60) < 10 ? ('0' + parseInt(duration / 60)) : (parseInt(duration / 60)); var second = duration % 60 < 10 ? ('0' + duration % 60) : (duration % 60); str = minute + ':' + second; return str; },
2.播放控制
// 播放状态控制 songPlay: function () { clearInterval(timer); var timer = setInterval(function () { // 获取后台音乐播放状态 wx.getBackgroundAudioPlayerState({ success: function (res) { // 播放状态 1表示播放中 if (res.status == 1) { that.setData({ isPlaying: true, songState: { progress: res.currentPosition / res.duration * 100, currentPosition: that.timeToString(res.currentPosition), duration: that.timeToString(res.duration) } }); var i = that.data.currentIndex if (i < that.data.lyric.length) { if (res.currentPosition - 4 >= parseInt(that.data.lyric[i][0])) { that.setData({ currentIndex: i + 1 }) } } if (that.data.currentIndex >= 5) { that.setData({ scrollTop: (that.data.currentIndex - 5) * 20, }) } } else { that.setData({ isPlaying: false }); clearInterval(timer); } } }); }, 1000); },
具体项目我已经放https://github.com/dt8888/JokeProject,请去下载参考!
专栏作家
honey缘木鱼。小程序社区博主,坚持原创分享技术博文。
本文原创发布于小程序社区。未经许可,禁止转载
原文地址:音乐播放小程序demo-微信小程序联盟/博主专区-微信小程序开发社区-微信小程序联盟
相关文章:
原文链接:https://blog.csdn.net/rolan1993/article/details/81216993
本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。
评论前必须登录!
立即登录