[TOC]
## 要点(小程序升级了)
### 点击事件
```
onMusic() {
if (this.data.isPlay) {
audio.pause();
this.setData({
isPlay: false
})
}
else {
// audio.title = this.properties.title;
audio.src = this.properties.musicUrl;
this.setData({
isPlay: true
})
}
}
```
### 恢复音乐函数
```
//当重新进入页面 恢复音乐 播放或暂停
_recoveryMusic() {
//如果监听到的src 与 properties的musicUrl相同时 让音乐播放
if (audio.src == this.properties.musicUrl) {
this.setData({
isPlay: true
})
}
//如果监听到的 paused(audio的属性) 为true时 设置isPlay为false
if (audio.paused) {
this.setData({
isPlay: false
})
}
},
```
### 监听音乐函数 让监听与播放保持一致
```
//监听音乐
_monitorMusic() {
//监听音频播放事件
audio.onPlay(() => {
this.setData({
isPlay: true
})
})
//监听音频暂停事件
audio.onPause(() => {
this.setData({
isPlay: false
})
})
//监听音频停止事件
audio.onStop(() => {
this.setData({
isPlay: false
})
})
//监听音频自然播放至结束的事件
audio.onEnded(() => {
this.setData({
isPlay: false
})
})
}
```
### 调用函数
```
//当组件触发 attached 生命周期时,会依次触发 my-behavior 中的 attached 生命周期函数和 my-component 中的 attached 生命周期函数
attached() {
this._recoveryMusic();
this._monitorMusic();
}
```
# 完整js
```
// components/classic/music/index.js
const audio = wx.getBackgroundAudioManager()
Component({
/**
* 组件的属性列表
*/
properties: {
content: {
type: String
},
image: {
type: String
},
musicUrl: {
type: String
}
},
/**
* 组件的初始数据
*/
data: {
isPlay: false
},
/**
* 组件的方法列表
*/
methods: {
onMusic() {
if (this.data.isPlay) {
audio.pause();
this.setData({
isPlay: false
})
}
else {
// audio.title = this.properties.title;
audio.src = this.properties.musicUrl;
this.setData({
isPlay: true
})
}
},
//当重新进入页面 恢复音乐 播放或暂停
_recoveryMusic() {
//如果监听到的src 与 properties的musicUrl相同时 让音乐播放
if (audio.src == this.properties.musicUrl) {
this.setData({
isPlay: true
})
}
//如果监听到的 paused(audio的属性) 为true时 设置isPlay为false
if (audio.paused) {
this.setData({
isPlay: false
})
}
},
//监听音乐
_monitorMusic() {
//监听音频播放事件
audio.onPlay(() => {
this.setData({
isPlay: true
})
})
//监听音频暂停事件
audio.onPause(() => {
this.setData({
isPlay: false
})
})
//监听音频停止事件
audio.onStop(() => {
this.setData({
isPlay: false
})
})
//监听音频自然播放至结束的事件
audio.onEnded(() => {
this.setData({
isPlay: false
})
})
}
},
//当组件触发 attached 生命周期时,会依次触发 my-behavior 中的 attached 生命周期函数和 my-component 中的 attached 生命周期函数
attached() {
this._recoveryMusic();
this._monitorMusic();
}
})
```
- 开发环境及接口
- 0.豆瓣接口
- 1.开发环境配置
- 2.一些相关文档
- 小程序实例效果
- 第0节、TodoList
- 第一节、豆瓣相关
- 1、tabBar的配置及导航加标题
- 2、数据加载及下拉加载
- 3、加载相关
- 4、轮播
- 5、星星评分
- 第二节、音乐播放相关
- 1.点击收藏分享
- 2.音乐播放
- 初始版
- 组件版
- 组件加强版
- 3.点赞
- 点赞初级版
- 点赞第二版
- 5.左右按钮
- 6.缓存
- 第三节、补充
- 地图
- 点击拍照换图
- 扫一扫
- 小程序语法
- 第一节 、HTTP的封装
- 0.http请求
- 1.function封装
- 2.class封装http
- 3.promise封装
- 4.config地址
- 第二节、组件
- 2.组件单独设置样式
- 3.一些有意义的标签
- 4.behavior
- 5.SLOT
- 6.左右按钮
- 5.点赞组件
- 6.用户授权
- 图片按钮 如分享
- 第三节、api
- 1.页面跳转
- 获取input里的值
- 1.添加评论
- 2.搜索框
- 3. 获取input里的值
- 2.设置缓存
- 3.模态框,弹出框
- 4.分享showActionSheet
- 5.定义全局的数据
- 2. 基础知识
- 1.setData
- 2.文件结构
- 3.wxml语法
- 第一节 数据绑定
- 第二节 列表渲染
- 第三节 条件渲染
- 第四节 模板
- 第五节 事件
- 第六节 引用
- 4.wxs
- 1.文本缩进问题
- 5.小程序中遇到的wxss 问题
- 1.width100%越界问题
- 废弃的文件
- 一个完整的小程序
- 1.启动页面
- 2.yuedu轮播+封装及数据调用
- yuedu的详情页
- 3.电影
- movie-more
- web-view