配色: 字号:
第3章 音乐小程序项目
2020-08-13 | 阅:  转:  |  分享 
  
第3章音乐小程序项目【任务1】标签页切换【任务3】播放器开发前准备【任务2】音乐推荐【任务4】播放列表学习目标掌握swiper组件、scr
oll-view组件的使用掌握slider组件的使用掌握掌握image组件的使用掌握音频API的使用掌握1234掌握目录3.13.
43.33.2开发前的准备【任务3】播放器【任务2】音乐推荐?点击查看本节相关知识点【任务1】标签页切换?点击查看本节相关知识点?
点击查看本节相关知识点?点击查看本节相关知识点目录3.5【任务4】播放列表?点击查看本节相关知识点知识架构3.1开发前的准备1
项目展示2项目分析3项目初始化知识架构3.2【任务1】标签页切换1任务分析2前导知识3编写页面结构和样式4实现标签页切换知识架构
3.3【任务2】音乐推荐1任务分析2前导知识3内容区域滚动4轮播图5功能按钮6热门音乐知识架构3.4【任务3】播放器1任务分析
2前导知识3定义基础数据4实现音乐播放功能5编写播放器页面6控制播放进度知识架构3.5【任务4】播放器列表1任务分析2编写页面结
构和样式3实现换曲功能3.1开发前准备1项目展示音乐小程序项目效果展示:3.1开发前准备2项目分析音乐小程序项目页面结
构图:tab导航栏content内容区player音乐播放控件3.1开发前准备2项目分析音乐小程序项目目录结构:标签功能a
pp.js应用程序的逻辑文件app.json应用程序的配置文件pages/index/index.jsindex页面的逻辑文件pa
ges/index/index.jsonindex页面的配置文件pages/index/index.wxssindex页面的样式文
件3.1开发前准备2项目分析音乐小程序项目目录结构:标签功能pages/index/index.wxmlindex页面的结
构文件pages/index/info.wxml“音乐推荐”标签页的结构文件pages/index/play.wxml“播放器”标
签页的结构文件pages/index/playlist.wxml“播放列表”标签页的结构文件images图片文件3.1开发前准备
3项目初始化开发者工具创建空白项目:index{"navigationBarBackgroundColor":"#fff
","navigationBarTitleText":"音乐","navigationBarTextStyle":"bla
ck"}{"pages":["pages/index/index"]}3.2【任务1】标签页切换1任务分析标签页和
页面(info.wxml、play.wxml、palylist.wxml)结构图:3.2【任务1】标签页切换2前导知识sw
iper组件编写滑动页面结构:swiper组件cc">01r-item>2per>3.2【任务1】标签页切换2前导知识swiper组件常用属性:可选值说明默认indicator-dotsBoole
an是否显示面板指示点,默认为falseindicator-colorColor指示点颜色,默认为rgba(0,0,0,.3)in
dicator-active-colorColor当前选中的指示点颜色,默认为#000000autoplayBoolean是否自动
切换,默认为falsecurrentNumber当前所在滑块的index,默认为0current-item-idString当前所
在滑块的item-id(不能同时指定current)3.2【任务1】标签页切换2前导知识swiper组件常用属性:可选值说
明默认intervalNumber自动切换时间间隔(毫秒),默认为5000durationNumber滑动动画时长(毫秒),默认为
500circularBoolean是否采用衔接滑动,默认为falseverticalBoolean滑动方向是否为纵向,默认为fa
lsebindchangeEventHandlecurrent改变时会触发change事件3.2【任务1】标签页切换2前导知识
swiper组件编写滑动页面结构:item-id属性itemitem-id="a"style="background:#ccc">0itemitem-id="b"style="background:#ddd">1itemitem-id="c"style="background:#eee">2

3.2【任务1】标签页切换2前导知识include主要用途:将代码拆分到多个文件中,可以更方便地查找代码。将代码公共部分抽
取出来。通过外部文件引入。bodyludesrc="footer.wxml"/>include3.2【任务1】标签页切换3编写页面结构和样式音乐小程序基
础页面和样式:pages/index/index.wxml??
音乐推荐…???class="content">??ew>3.2【任务1】标签页切换3编写页面结构和样式音乐小程序基础页面和样式:pages/index/index.wxss
page{display:flex;flex-direction:column;background:#17181a
;color:#ccc;height:100%;?}…3.2【任务1】标签页切换3编写页面结构和样式测试页面inf
o.wxml、page.wxml、play.wxml文件:playlist.wxml:#ddd;color:#000;height:100%">playnd:#ccc;color:#000;height:100%">infound:#eee;color:#000;height:100%">playlistplay.wxmlInfo.w
xml3.2【任务1】标签页切换4实现标签页切换单击导航栏选项卡实现标签页切换:单击事件标签页切换样式.tab-item.
active{color:#c25b5b;border-bottom-color:#c25b5b;}s="tab-item{{tab==0?''active'':''''}}"bindtap="changeItem"data-ite
m="0">音乐推荐changeItem:function(e){…},3.2【任务1】标签页切换4实现标签
页切换通过滚动事件切换页面效果:滚动事件标签页切换样式.tab-item.active{color:#c25b5b;b
order-bottom-color:#c25b5b;}e="changeTab">changeTab:function(e){…},3.3【任务2】音乐推荐1任务分析音乐推
荐页面结构图:3.3【任务2】音乐推荐2前导知识scroll-view组件的属性及说明:可选值说明默认scroll-xBo
olean允许横向滚动,默认为falsescroll-yBoolean允许纵向滚动,默认为falsescroll-topNumbe
r/String设置竖向滚动条的位置scroll-leftNumber/String设置横向滚动条的位置bindscrol
ltoupperEventHandle滚动到顶部/左边时触发的事件3.3【任务2】音乐推荐2前导知识scroll-view
组件的属性及说明:可选值说明默认bindscrolltolowerEventHandle滚动到底部/右边时触发的事件scroll-
with-animationBoolean在设置滚动条位置时是否使用动画过渡scroll-into-viewString设置哪个方
向可滚动,则在哪个方向滚动到该元素。值应为某子元素id(id不能以数字开头)bindscrollEventHandle滚动时触发的
事件3.3【任务2】音乐推荐2前导知识scroll-view组件事件对象:roll-ystyle="height:200px"bindscroll="scroll">th:200%;height:400px;background:#ccc">scroll
:function(e){console.log(e.detail)},3.3【任务2】音乐推荐2前导知识scrol
l-view组件事件对象:3.3【任务2】音乐推荐2前导知识scroll-view组件事件对象参数分析:scrollLef
t:横向滚动条左侧到视图左边的距离。scrollTop:纵向滚动条上端到视图顶部的距离。scrollHeight:纵向滚动条在Y轴
上最大滚动距离。scrollWidth:横向滚动条在X轴上最大的滚动距离。deltaX:横向滚动条的滚动状态。deltaY:纵向滚
动条的滚动状态。3.3【任务2】音乐推荐2前导知识image组件属性及说明:可选值说明默认srcString图片资源地址m
odeString图片裁剪、缩放的模式,默认为''scaleToFill''lazy-loadBoolean图片是否懒加载,默认为fa
lse。只针对page与scroll-view下的image有效binderrorHandleEvent图片发生错误时的事件bin
dloadHandleEvent图片载入完成时的事件3.3【任务2】音乐推荐2前导知识image组件缩放模式:可选值说明s
caleToFill不保持纵横比缩放图片,使图片的宽高完全拉伸至填满image元素。适用于容器与图片宽高比相同的情况,如果不同,图
片会变形。aspectFit保持纵横比缩放图片,使图片的长边能完全显示出来。适用于将图片完整显示出来。例如,详情页的图片aspec
tFill保持纵横比缩放图片,只保证图片的短边能完全显示出来,长边将会发生截取。适用于容器固定,图片自动缩放的情况,如列表页的缩略
图widthFix宽度不变,高度自动变化,保持原图宽高比不变3.3【任务2】音乐推荐2前导知识image组件9种裁剪模式:
可选值说明top不缩放图片,只显示图片的顶部区域bottom不缩放图片,只显示图片的底部区域center不缩放图片,只显示图片的中
间区域left不缩放图片,只显示图片的左边区域right不缩放图片,只显示图片的右边区域3.3【任务2】音乐推荐2前导知识
image组件9种裁剪模式:可选值说明topleft不缩放图片,只显示图片的左上边区域topright不缩放图片,只显示图片的
右上边区域bottomleft不缩放图片,只显示图片的左下边区域bottomright不缩放图片,只显示图片的右下边区域3.3
【任务2】音乐推荐2前导知识image组件缩放模式和裁剪模式测试:3.3【任务2】音乐推荐3内容区域滚动scrol
l-view组件:"background:#eee;height:1000px">?已到达底部l-view>3.3【任务2】音乐推荐4轮播图swiper组件实现轮播图:pages/index/info.wxmliperclass="content-info-slide"indicator-color="rgba(255,255,255
,.5)"indicator-active-color="#fff"indicator-dotscircularautop
lay>…3.3【任务2】音乐推荐5功能按钮fl
ex布局实现功能按钮:pages/index/info.wxml>私人FM
…3.3【任务2】音乐推荐6热门音乐flex布局实现页面布局:pages/index/info.wxml
推荐歌曲iew>
3.4【任务3】播放器1任务分析播放器标签页结构图:3.4【任务3】播放器1任务分析
播放器的具体功能进行分析:音乐信息:显示当前播放曲目的标题和艺术家。专辑封面:当音乐播放时,专辑封面会顺时针旋转。播放进度:显示
播放进度,调节音乐进度。3.4【任务3】播放器2前导知识audioCtx对象声明的方式:创建audioCtx上下文实例v
araudioCtx=wx.createInnerAudioContext();3.4【任务3】播放器2前导知识音
频API接口的属性及说明:可选值名称说明属性src音频资源的地址,用于直接播放startTime开始播放的位置(秒),默认为0au
toplay是否自动开始播放,默认为falseloop是否循环播放,默认为falsevolume音量。范围0~1。默认为13.4
【任务3】播放器2前导知识音频API接口的属性及说明:可选值名称说明属性duration音频的长度(秒)。在当前有合法的s
rc时返回(只读)currentTime音频的播放位置(秒)。在当前有合法的src时返回(只读)paused当前是是否暂停或停止状
态(只读)3.4【任务3】播放器2前导知识音频API接口的方法及说明:可选值名称说明方法play()播放pause()暂
停(暂停后的音频再播放会从暂停处开始播放)stop()停止(停止后的音频再播放会从头开始播放)seek()跳转到指定位置destr
oy()销毁当前实例onCanplay()音频进入可以播放状态的事件(参数为回调函数)onPlay()音频播放事件(参数为回调函数
)3.4【任务3】播放器2前导知识音频API接口的方法及说明:可选值名称说明方法onPause()音频暂停事件(参数为回
调函数)onStop()音频停止事件(参数为回调函数)onEnded()音频自然播放至结束的事件(参数为回调函数)onSeeked
()音频进行跳转操作的事件(参数为回调函数)onTimeUpdate()音频播放进度更新事件(参数为回调函数)onError()音
频播放错误事件(参数为回调函数)3.4【任务3】播放器2前导知识innerAudioContext案例使用:page/t
est/test.jsonReady:function(){varaudioCtx=wx.createInnerAudi
oContext()audioCtx.src=''http://……/xx.mp3''audioCtx.onPlay(functi
on(){console.log(''开始播放'')})…},3.4【任务3】播放器2前导知识slider组件属性及说
明:可选值类型说明minNumber最小值,默认为0maxNumber最大值,默认为100stepNumber步长,取值大于0,可
被(max-min)整除,默认为1valueNumber当前取值,默认为0activeColorColor已选择的颜色,默认为#1
aad19backgroundColorColor背景条的颜色,默认为#e9e9e93.4【任务3】播放器2前导知识sl
ider组件属性及说明:可选值类型说明block-sizeNumber滑块的大小,取值范围为12~28,默认为28block-co
lorColor滑块的颜色,默认为#ffffffshow-valueBoolean是否显示当前value,默认为falsebind
changeEventHandle完成一次拖动后触发的事件bindchangingEventHandle拖动过程中触发的事件3.4
【任务3】播放器2前导知识slider组件的使用:page/test/test.wxmlpage/test/test.j
ssliderChanging:function(e){console.log(e.detail.value)},erbindchanging="sliderChanging"show-value/>3.4【任务3】播放器2前导知识
slider组件的使用:3.4【任务3】播放器3定义基础数据音乐播放列表和音乐状态数据:pages/index/in
dex.jsstate:''paused'',playIndex:0,play:{…},playlist:[{id:1,
title:''钢琴协奏曲'',singer:''肖邦'',src:''http://…….mp3'',coverImgUrl:
''/images/cover.jpg''}…}],3.4【任务3】播放器4实现音乐播放功能音乐播放逻辑代码:pages
/index/index.jsaudioCtx:null,onReady:function(){this.audioCtx
=wx.createInnerAudioContext()//默认选择第1曲this.setMusic(0)},setM
usic:function(index){…},3.4【任务3】播放器4实现音乐播放功能底部播放器的结构代码:pag
es/index/index.wxmlss="player-cover"src="{{play.coverImgUrl}}"/>er-info">…3.4【任务3】播放器4实现音乐播放功能底部播放器的样式代码:p
ages/index/index.wxss.player{display:flex;align-items:center
;background:#222;border-top:1pxsolid#252525;height:112rpx
;}…3.4【任务3】播放器4实现音乐播放功能底部播放器暂停/播放按钮控制歌曲:pages/index/index.wx
mlpages/index/index.jsages/02.png"bindtap="play"/>png"bindtap="pause"/>play:function(){this.audioCtx.play()th
is.setData({state:''running''})}…3.4【任务3】播放器4实现音乐播放功能实现播放器切
换下一曲歌曲:pages/index/index.wxml"next"/>next:function(){varindex=this.data.playIndex>=th
is.data.playlist.length-1?0:this.data.playIndex+1this.se
tMusic(index)…},pages/index/index.js3.4【任务3】播放器5编写播放器页面播放器页面
结构代码:pages/index/play.wxml"content-play-info">{{play.title}}——{{play.
singer}}——
…3.4【任务3】播放器5编写播放器页面播放器页面样
式代码:pages/index/play.wxss.content-play{display:flex;justify-c
ontent:space-around;flex-direction:column;height:100%;text-
align:center;}…3.4【任务3】播放器5编写播放器页面通过CSS3动画实现海报的旋转功能:pages/i
ndex/play.wxmlmagesrc="{{play.coverImgUrl}}"style="animation-play-state:{{
state}}"/>3.4【任务3】播放器5编写播放器页面通过CSS3动画实现海报的旋转功能:pages
/index/play.wxss.content-play-coverimage{animation:rotateImag
e10slinearinfinite;…}@keyframesrotateImage{from{transfor
m:rotate(0deg);}to{transform:rotate(360deg);}}3.4【任务3】播放器6
控制播放进度播放器页面下方的滑块结构:pages/index/play.wxmld33a31"block-size="12"backgroundColor="#dadada"value="{{play.pe
rcent}}"/>{{play.duration}}3.4【任务3】播放器6控制播放进度播
放器页面下方的滑块样式:pages/index/play.wxss.content-play-progress{display
:flex;align-items:center;…}.content-play-progress>view{fle
x:1;}3.4【任务3】播放器6控制播放进度显示音乐的播放进度:pages/index/index.jsonRead
y:function(){this.audioCtx=wx.createInnerAudioContext()var
that=thisthis.audioCtx.onEnded(function(){that.next()})…}
,3.4【任务3】播放器6控制播放进度控制进度条的长度控制歌曲播放进度:slider组件滑块事件处理函数sliderCh
ange:function(e){varsecond=e.detail.valuethis.audioCtx.
duration/100this.audioCtx.seek(second)},iderChange"activeColor="#d33a31"block-size="12"backgroundColor=
"#dadada"value="{{play.percent}}"/>3.5【任务4】播放列表1任务分析控制进度条的长度控制歌曲播放进度:3.5【任务4】播放列表2编写页面和结构样式控制进度条的长度控制歌曲播放进度:pages/index/playList.wxml…3.5【任务4】播放列表2编写页面和结构样式控制进度条的长度控制歌曲播放进度:pages/index/index.wxss.playlist-item{display:flex;align-items:center;border-bottom:1rpxsolid#333;height:112rpx;}…3.5【任务4】播放列表2编写页面和结构样式实现换曲功能:pages/index/index.jschange:function(e){this.setMusic(e.currentTarget.dataset.index)this.play()},本章总结本章讲解了音乐小程序项目的完整开发流程,其开发步骤包括页面结构的分析、样式的设计、组件的运用等。通过本章的学习,读者能够掌握小程序的基本交互逻辑的开发,能够运用API来实现项目中的特定功能,学会解决开发过程中常见的问题。
献花(0)
+1
(本文系摘摘摘丿丿...首藏)