2021/5/25 |
(歌曲播放篇开始)把当前歌曲id传给歌曲详情页 |
路由跳转传参,query参数 |
如何把当前音乐id从歌曲推荐页传给歌曲详情页 |
封装一个点击事件函数,里面使用路由跳转的形式,把id传给歌曲详情页,(url: '/pages/songDetail/songDetail?musicId=' + song.id,)onload函数的option参数,是专门用于接收路由跳转的参数的,因此songDetail页面是能接收到id的,再把musicId动态更新到data中,而后songDetail页根据id值查找详情信息显示到页面上。 |
|
2021/5/26 |
音乐播放暂停功能 |
定义一个isPlay标识,断定音乐是否在播放,初始值为false,音乐播放为true。 |
封装音乐播放暂停功能函数 |
绑定一个点击事件,里面调用musicControl()功能函数。封装控制播放暂停的功能函数musicControl(isPlay, musicId,musicLink),首先判断isPlay的值,为true,音乐播放,onload中建立BackgroundAudioManager实例,填写src、title属性,若是false,调用pause()方法。 |
BackgroundAudioManager.pause() |
2021/5/27 |
解决系统任务栏控制音乐播放状态显示不一致的问题 |
建立BackgroundAudioManager实例,调用播放暂停中止方法,onPlay(),onPause(),onStop()方法 |
若是用户操做系统任务栏控制音乐暂停/播放按钮,页面不知道,致使页面显示是否播放的状态和真实的音乐播放状态不一致 |
经过建立控制全局背景音频的实例去监视音乐播放、暂停和中止的功能 |
BackgroundAudioManager:全局惟一的背景音频管理器。 |
2021/5/28 |
getApp解决页面销毁音乐播放状态问题 |
定义全局变量和全局变量的引用 |
如何解决页面销毁音乐播放状态的问题 |
定义全局变量globalData,传入两个参数isMusicPlay、musicId,若是当前页面音乐是在播放(isMusicPlay:true),而且全局musicId和当前musicId一致,修改当前页面播放状态为true。获取全局musicId能够去监听事件onPlay()函数中拿,而后(isMusicPlay:true),onPause()、onStop()里面把(isMusicPlay:false)。 |
|
2021/5/29 |
页面通讯完整实现(实现切歌的功能) |
实现两个页面之间的通讯,npm install pubsub-js,订阅方: PubSub.subscribe(事件名,事件的回调),是接收数据的一方;发布方: PubSub.publish(事件名,提供的数据),是提供数据的一方 |
实现两个页面间的通讯 |
歌曲详情页点击上一首pre,下一首next的图标,须要传递标识给推荐歌单页,推荐歌单页先断定类型,而后若是是next,则当前index+1,若是是pre,则index-1,有了index的值,咱们就能找到当前音乐的musicId,而后回传给歌曲详情页。歌曲详情页接收musicId值,调用音乐详情功能函数,控制当前音乐自动播放,而后取消订阅此次musicId。 |
|
2021/5/30 |
进度条动态实现 |
监听音乐实时播放的进度 |
显示实时进度条;将ms显示成分钟:秒 |
首先用BackgroundAudioManager.onTimeUpdate()方法监听背景音频播放进度更新,音乐实时播放的时间currentTime从this.backgroundAudioManager.currentTime里面取,这里单位是s,须要转为ms,npm install moment,而后调用moment().format('mm:ss'),格式化为分钟:秒的形式。总时长durationTime从封装的音乐详情功能函数中取,放到data中。currentTime/durationTime=当前正在播放进度条的宽度/进度条总宽度,因此咱们要动态显示的进度条宽度 = currentTime/durationTime * 进度条总宽度。动态更新到data中,供wxml页面使用。 |
BackgroundAudioManager.onTimeUpdate(function callback) |
2021/5/31 |
音乐播放结束自动切换到下一首(歌曲播放篇完结) |
监听背景音频天然播放结束 |
监听背景音频天然播放结束,自动切换为下一首,而且自动播放 |
这里须要使用BackgroundAudioManager.onEnded()方法监听音乐是否播放结束,里面只须要发布一个next消息给歌曲推荐页便可,而后再写一个订阅musicId事件,获取音乐详情,自动播放。最后把实时进度条的宽度设置为0,歌曲开始播放时间为00:00。 |
BackgroundAudioManager.onEnded(function callback) |