微信小程序之组件的集合(三)
看看音乐播放组件是如何实现完成的音乐的播放的!!!
一、音乐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模块的开发,继续继续...
微信小程序之组件的集合(三)的更多相关文章
- 微信小程序之组件的集合(四)
这个主要是来开发book的这个大模块的,看看如何优雅的开发出booked模块! 一.book模块的创建 这个就很简单了,创建一个大的框架是很简单的 二.组件的编写 (1)wxml组件页面的编码 首先是 ...
- 微信小程序之组件的集合(六)
这个将是最后一篇关于小程序的记录了,课程接近尾声,最后一个是关于用户的page页面,看看这个页面中有哪些值得学习的地方! 一.page中my开发 这个主要是展示用户喜欢的杂志,以及用户的信息,需要创建 ...
- 微信小程序之组件的集合(二)
继续微信小程序开发的学习,继续跟着老师的讲课思路来学习,继续开发项目中所用到的组件 一.导航栏navi组件的开发 1.新建组件的文件结构 这个就是先新建目录navi.然后在navi文件夹中新建comp ...
- 微信小程序之组件的集合(五)
这个是学习复杂的组件的封装的,在课程中,主要实现的是书单上方的搜索功能组件的开发,这个应该是较之前的组件是有一定难度的,但是现在学到现在,感觉前端的内容和后端的内容比较起来,还是比较容易的,而且好多内 ...
- 微信小程序之组件的集合(一)
小程序中是很强调组件中开发的,我们看到的页面是由许多组件组成的,但是这些组件是如何组合在一起的呢?来学习一下! 一.组件中数据的获取 接着上一篇文章,继续来优化代码,如何把从服务器上获取的数据显示到 ...
- 微信小程序弹窗组件
概述 自己封装的一个比较简单微信弹窗小组件,主要就是教会大家对微信小组件的用法和理解,因为微信小程序对组件介绍特别少,所以我就把自己的理解分享给大家 详细 代码下载:http://www.demoda ...
- 微信小程序从零开始开发步骤(三)底部导航栏
上一章节,我们分享了如何创建一个新的页面和设置页面的标题,这一章我们来聊聊底部导航栏是如何实现的.即点击底部的导航,会实现不同对应页面之间的切换. 我们先来看个我们要实现的底部导航栏的效果图:(三个导 ...
- 微信小程序_(组件)icon、text、rich-text、progress四大基础组件
微信小程序基础组件官方文档 传送门 Learn 一.icon图标组件 二.rich-text富文本组件 三.text文本组件 四.progress进度条组件 一.icon图标组件 type:icon的 ...
- 微信小程序_(组件)view视图容器
微信小程序view组件官方文档 传送门 Learn 一.hover-class属性 二.hover-start-time与hover-stay-time属性 三.hover-stop-propagat ...
随机推荐
- css 图片波浪效果
参考:https://blog.csdn.net/zhichaosong/article/details/80944924#_99 效果: wave2.png html: <!DOCTYPE h ...
- php 例子
图片上传 uploadify(flash版是免费的) 12个最好的 HTML5 jQuery 文件上传脚本 20款最好的jQuery文件上传插件
- 2019-2-17-如何在-Windows-10-中移除-Internet-Explorer-浏览器
title author date CreateTime categories 如何在 Windows 10 中移除 Internet Explorer 浏览器 lindexi 2019-02-17 ...
- Python全栈开发:生成随机数
#!/usr/bin/env python # -*- coding;utf-8 -*- import random def foo(args): """ :param ...
- selenium学习笔记——driver.get(url) 页面加载时间太长
# 两个同时设置才行 # 实现效果:加载状态停止,进行代码下一步操作 driver.set_page_load_timeout(10) driver.set_script_timeout(10) # ...
- MySQL中\g和\G的作用
\g的作用和MySQL中的分号”;"是一样: \G的作用是讲查找到的内容结构旋转90度,变成纵向结构: 下面举例说明,查找数据库中的存在的存储过程状态: SHOW PROCEDURE STA ...
- IDE 插件新版本发布,开发效率 “biu” 起来了
近日,Cloud Toolkit正式推出了面向 IntelliJ 和 Eclipse 两个平台的新款插件,本文挑选了其中三个重大特性进行解读,点击文末官网跳转链接,可查看详细的版本说明. 本地应用一键 ...
- 反编译之jd-gui的安装
1.下载JD-GUI http://jd.benow.ca/ 2.下载的dmg安装一直失败 通过brew(https://brew.sh/index_zh-cn.html)命令安装 brew cas ...
- django中的request对象
Request 我们知道当URLconf文件匹配到用户输入的路径后,会调用对应的view函数,并将 HttpRequest对象 作为第一个参数传入该函数. 我们来看一看这个HttpRequest对 ...
- c#设置文件及文件夹的属性
c#中通过FileAttributes枚举来设置文件或文件夹的属性. FileAttributes 枚举 成员名称 说明 Archive 文件的存档状态.应用程序使用此属性为文件加上备份或移除标记. ...