看看音乐播放组件是如何实现完成的音乐的播放的!!!

一、音乐music组件的开发

1、页面以及页面样式的开发

 // music组件页面开发
<view hidden="{{hidden}}" class="container">
<image class="classic-img {{playing?'rotation':''}}" src='{{img}}'/>
<image class="player-img" bind:tap="onPlay" src='{{!playing?playSrc:pauseSrc}}' />
<image class="tag" src='images/music@tag.png' />
<text class="content">{{content}}</text>
</view> // 样式的开发 css代码
.container{
display: flex;
flex-direction: column;
align-items: center
} .classic-img{
width: 422rpx;
height: 422rpx;
margin-top: 60rpx;
border-radius: 50%;
} .player-img{
width: 120rpx;
height: 120rpx;
position: relative;
bottom: 270rpx;
} .tag{
width: 44rpx;
height: 128rpx;
position: relative;
bottom: 160rpx;
right: 310rpx;
}
/* 旋转的动画效果css */
.rotation {
-webkit-transform: rotate(360deg);
animation: rotation 12s linear infinite;
-moz-animation: rotation 12s linear infinite;
-webkit-animation: rotation 12s linear infinite;
-o-animation: rotation 12s linear infinite;
} @-webkit-keyframes rotation {
from {
-webkit-transform: rotate(0deg);
} to {
-webkit-transform: rotate(360deg);
}
}

2、页面中逻辑代码的开发

这里用到了微信小程序中的音乐管理对象,音乐的播放都是通过这个来控制的。

 import {
classicBeh
} from '../classic-beh.js'; // 创建微信小程序中的音乐管理对象
const mMgr = wx.getBackgroundAudioManager(); Component({
/**
* 组件的属性列表 动画效果,当音乐播放的时候,图片是会转动的。如何实现???
* CSS3 小程序中的动画API
*/
behaviors: [classicBeh],
properties: {
src: String,
title: String
}, /**
* 组件的初始数据
*/
data: {
pauseSrc: 'images/player@pause.png',
playSrc: 'images/player@play.png',
playing: false
}, // 在组件实例进入页面节点树时执行
attached:function(event){
this._recoverStatus();
this._mointorSwitch();
}, // 生命周期函数 当组件被移除时候触发
detached:function(event){
// 只有当用wx:if 控制组件的显示的时候。才会起作用。hidden控制的时候不会起作用
// wx:if hidden 的区别 wx:if控制组件的显示的时候回重新完成的加载真个组件的生命周期,所以在频繁的切换组件的时候不建议使用的
// mMgr.stop();
},
/**
* 组件的方法列表
*/
methods: {
onPlay: function(event) {
// 图片要切换
if(!this.data.playing){
this.setData({
playing: true
})
mMgr.src = this.properties.src;
}else{
this.setData({
playing: false
})
mMgr.pause();
}
mMgr.title = this.properties.title;
}, // 控制音乐播放的图片的切换
_recoverStatus:function(){
// 当前组件中没有音乐在播放
if(mMgr.paused){
this.setData({
playing:false
})
return;
}
// 当前有一个组件中的音乐正在播放,并且当前位置就是那个音乐组件
if(mMgr.src == this.properties.src){
this.setData({
playing: true
})
}
}, // 监听总控开关和组件联动
_mointorSwitch:function(){
// 播放音乐
mMgr.onPlay(()=>{
this._recoverStatus();
})
// 暂停音乐
mMgr.onPause(()=>{
this._recoverStatus();
})
// 关闭音乐总开关
mMgr.onStop(()=>{
this._recoverStatus();
}) // 一首音乐自动名播放完成切换状态
mMgr.onEnded(()=>{
this._recoverStatus();
})
}
}
})

3、组件使用注意事项

组件在classic中使用的时候,需要考虑组件的显示与隐藏使用hidden属性还是wx:if来控制,至于这两者的区别,官方的文档来看:

https://developers.weixin.qq.com/miniprogram/dev/reference/wxml/conditional.html#wx:if%20vs%20hidden

使用的代码:

 <!-- 这里只能使用wx:if 不能用自定义的hidden属性,涉及到生命周期函数的触发 -->
<v-music wx:if='{{classic.type == 200}}' img='{{classic.image}}' content='{{classic.content}}' src='{{classic.url}}' title='{{classic.title}}' />

二、小程序中tab栏的开发

这个不用自己重新编写,小程序中提供了现成的底部tab栏的,只需要在app.json 中配置一下就可以了:

 {
"pages": [
"pages/classic/classic",
"pages/book/book",
"pages/my/my"
],
"window": {
"navigationBarBackgroundColor": "#ffffff",
"navigationBarTitleText": "SSC在雨中",
"navigationBarTextStyle": "black"
},
"sitemapLocation": "sitemap.json",
"tabBar" : {
"selectedColor":"#000000",
"backgroundColor": "#ffffff",
"color": "#c7c7c7",
"list":[
{
"pagePath":"pages/classic/classic",
"text": "流行",
"iconPath": "/images/tab/classic.png",
"selectedIconPath":"/images/tab/classic@highlight.png"
},
{
"pagePath": "pages/book/book",
"text": "书籍",
"iconPath": "/images/tab/book.png",
"selectedIconPath": "/images/tab/book@highlight.png"
},
{
"pagePath": "pages/my/my",
"text": "喜欢",
"iconPath": "/images/tab/my.png",
"selectedIconPath": "/images/tab/my@highlight.png"
}
]
}
}

接下来就是另一个大的模块的开发了,bool模块的开发,继续继续...

内容出处:七月老师《纯正商业级小程序开发》视频课程

微信小程序之组件的集合(三)的更多相关文章

  1. 微信小程序之组件的集合(四)

    这个主要是来开发book的这个大模块的,看看如何优雅的开发出booked模块! 一.book模块的创建 这个就很简单了,创建一个大的框架是很简单的 二.组件的编写 (1)wxml组件页面的编码 首先是 ...

  2. 微信小程序之组件的集合(六)

    这个将是最后一篇关于小程序的记录了,课程接近尾声,最后一个是关于用户的page页面,看看这个页面中有哪些值得学习的地方! 一.page中my开发 这个主要是展示用户喜欢的杂志,以及用户的信息,需要创建 ...

  3. 微信小程序之组件的集合(二)

    继续微信小程序开发的学习,继续跟着老师的讲课思路来学习,继续开发项目中所用到的组件 一.导航栏navi组件的开发 1.新建组件的文件结构 这个就是先新建目录navi.然后在navi文件夹中新建comp ...

  4. 微信小程序之组件的集合(五)

    这个是学习复杂的组件的封装的,在课程中,主要实现的是书单上方的搜索功能组件的开发,这个应该是较之前的组件是有一定难度的,但是现在学到现在,感觉前端的内容和后端的内容比较起来,还是比较容易的,而且好多内 ...

  5. 微信小程序之组件的集合(一)

    小程序中是很强调组件中开发的,我们看到的页面是由许多组件组成的,但是这些组件是如何组合在一起的呢?来学习一下!  一.组件中数据的获取 接着上一篇文章,继续来优化代码,如何把从服务器上获取的数据显示到 ...

  6. 微信小程序弹窗组件

    概述 自己封装的一个比较简单微信弹窗小组件,主要就是教会大家对微信小组件的用法和理解,因为微信小程序对组件介绍特别少,所以我就把自己的理解分享给大家 详细 代码下载:http://www.demoda ...

  7. 微信小程序从零开始开发步骤(三)底部导航栏

    上一章节,我们分享了如何创建一个新的页面和设置页面的标题,这一章我们来聊聊底部导航栏是如何实现的.即点击底部的导航,会实现不同对应页面之间的切换. 我们先来看个我们要实现的底部导航栏的效果图:(三个导 ...

  8. 微信小程序_(组件)icon、text、rich-text、progress四大基础组件

    微信小程序基础组件官方文档 传送门 Learn 一.icon图标组件 二.rich-text富文本组件 三.text文本组件 四.progress进度条组件 一.icon图标组件 type:icon的 ...

  9. 微信小程序_(组件)view视图容器

    微信小程序view组件官方文档 传送门 Learn 一.hover-class属性 二.hover-start-time与hover-stay-time属性 三.hover-stop-propagat ...

随机推荐

  1. css 图片波浪效果

    参考:https://blog.csdn.net/zhichaosong/article/details/80944924#_99 效果: wave2.png html: <!DOCTYPE h ...

  2. php 例子

    图片上传 uploadify(flash版是免费的) 12个最好的 HTML5 jQuery 文件上传脚本 20款最好的jQuery文件上传插件

  3. 2019-2-17-如何在-Windows-10-中移除-Internet-Explorer-浏览器

    title author date CreateTime categories 如何在 Windows 10 中移除 Internet Explorer 浏览器 lindexi 2019-02-17 ...

  4. Python全栈开发:生成随机数

    #!/usr/bin/env python # -*- coding;utf-8 -*- import random def foo(args): """ :param ...

  5. selenium学习笔记——driver.get(url) 页面加载时间太长

    # 两个同时设置才行 # 实现效果:加载状态停止,进行代码下一步操作 driver.set_page_load_timeout(10) driver.set_script_timeout(10) # ...

  6. MySQL中\g和\G的作用

    \g的作用和MySQL中的分号”;"是一样: \G的作用是讲查找到的内容结构旋转90度,变成纵向结构: 下面举例说明,查找数据库中的存在的存储过程状态: SHOW PROCEDURE STA ...

  7. IDE 插件新版本发布,开发效率 “biu” 起来了

    近日,Cloud Toolkit正式推出了面向 IntelliJ 和 Eclipse 两个平台的新款插件,本文挑选了其中三个重大特性进行解读,点击文末官网跳转链接,可查看详细的版本说明. 本地应用一键 ...

  8. 反编译之jd-gui的安装

    1.下载JD-GUI  http://jd.benow.ca/ 2.下载的dmg安装一直失败 通过brew(https://brew.sh/index_zh-cn.html)命令安装 brew cas ...

  9. django中的request对象

    Request 我们知道当URLconf文件匹配到用户输入的路径后,会调用对应的view函数,并将  HttpRequest对象  作为第一个参数传入该函数. 我们来看一看这个HttpRequest对 ...

  10. c#设置文件及文件夹的属性

    c#中通过FileAttributes枚举来设置文件或文件夹的属性. FileAttributes 枚举 成员名称 说明 Archive 文件的存档状态.应用程序使用此属性为文件加上备份或移除标记. ...