小程序代码 根据尚硅谷提供的视频,简单学习小程序开发。实现的是一个用网易云音乐提供的接口开发的云音乐小程序。到gitee全部更新完成, 已完成了视频中 的所有内容,并不涉及完成全部项目内容。(学这个的目的是了解大概的小程序开发流程,并不涉及这个项目的完整开发)
关于后端代码,可以访问后端代码 。或者直接去尚硅谷官网下载相关代码。
由于小程序版本更新太快,很多东西视频中是对的,但是在后期版本就已经无法完成,至项目全部更新到gitee,所有视频所述内容均已完成。如果之后遇到不符合那就是版本不一致导致,请 查阅小程序官方最新版本进行更改。
已解决bug:
title: '登录提示',
content: '请登录后观看视频内容',
success (res) {
if (res.confirm) {
wx.reLaunch({
url: '/pages/login/login'
})
} else if (res.cancel) {
return;
}
}
})
//这个return绝对不能少,以上else中的return只是表示退出else if。否则还可能出现 Cannot read property map of undefined return; }
解决P49出现可能”重音“问题
描述:点击下一个视频之后再点回原视频,会出现视频声音已经播放,视频没有成功加载出来的问题。
原因:在handlePlay()
函数中添加加一条将当前视频id输出到控制台的语句,发现居然输出了两次。这不就跟重音相匹配了嘛。这时考虑为什么会出现两次呢,这不是因为和都触发了handlePlay()
函数嘛。估计问题出现在这。
解决:既然是因为和两次触发handlePlay()
,那能不能限制其中一次呢?给和分配任务,点击只负责显示,而负责播放。这理论上是可行的解决方案。
那么怎么才能不进行视频播放呢,其实最简单方法是使用另起一个函数,而这个函数不进行播放,只负责采集视频id(触发handlePlay()
的根本就是采集id)。我第一种想法是将采集的id交给专门的函数进行处理进而播放视频。但是无独有偶,我发现了event对象有一个type属性。这个属性在接受组件的bindplay
触发时的value是”play
“,而的bindtap
触发时value是”tap
“。所以应该可以根据这个value的不同进行判断,然后进行不同处理。以下解决方案:在判断是否有播放记录后添加
if (event.type === 'tap' && videoItem){
return
}`
如果event.type === 'tap'
则表示点击的是图片而非视频,那么我们不对其进行播放,直接退出;
这样又会遇到一个问题,就是当编译完成后点击视频,最开始点击的一定是图片,就会造成真正的视频永远不会被播放,解决这个问题可以通过播放记录”videoItem
“来进行判别;
当视频没有播放时,点击图片,event.type === 'tap'的结果为true,而videoItem为false,那么一下if内部不会被执行,当再次播放时event.type === 'tap'的结果还是为true,但是videoItem也是true了。
当然这样还一个问题是,当播放原视频时,必须点击两次,第一次点击图片,第二次才是视频。这样显然不合理,这时就需要使用video组件的autoplay
属性了。当点击图片后切换到视频,而视频设置了自动播放,使用使用起来就跟直接点击视频无二异了。
最后在组件中添加autoplay
属性。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。