# 小程序播放音乐
## 旧版本(不久会淘汰):wx.playBackgroundAudio(Object object)
必填属性有:dataUrl,为音乐链接
选填属性有:
| 参数 | 类型 | 说明 |
|---|---|---|
| title | string | 音乐标题 |
| coverImgUrl | string | 封面URL |
| success | function | 接口调用成功的回调函数 |
| fail | function | 接口调用失败的回调函数 |
| complete | function | 接口调用结束的回调函数(调用成功、失败都会执行) |
1. 在.wxml内写入按钮,点击播放音乐
~~~
// 点击事件触发,播放音乐
~~~
~~~
<button bindtap='click'>Paris</button>
Page({
click() {
wx.playBackgroundAudio({
dataUrl: this.data.url,
title:'Paris'
})
},
~~~
# 新版本 wx.getBackgroundAudioManager
## 详细api点击[链接](https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/BackgroundAudioManager.html)
### 1.属性
| 参数 | 类型 | 说明 |
|---|---|---|
| src|string |默认为空字符串,当设置了新的 src 时,会自动开始播放 |
|startTime | number| 音频开始播放的位置(单位:s)。|
|title |string |音频标题,用于原生音频播放器音频标题(必填)。 |
|epname |string | 专辑名,原生音频播放器中的分享功能,分享出去的卡片简介,也将使用该值。|
| singer| string |歌手名 |
| coverImgUrl| string |封面图 URL,用于做原生音频播放器背景图。 |
| webUrl| string |页面链接,原生音频播放器中的分享功能,分享出去的卡片简介,也将使用该值。 |
| protocol|string |音频协议 |
|duration |number | 当前音频的长度(单位:s),只有在有合法 src 时返回。(只读)|
|currentTime | number | 当前音频的播放位置(单位:s),只有在有合法 src 时返回。(只读)|
|paused |boolean |当前是否暂停或停止。(只读) |
| buffered| number |音频已缓冲的时间,仅保证当前播放时间点到此时间点内容已缓冲。(只读) |
> **在写音乐播放函数时,src和title必须都写,并放在一起才能进行播放**
~~~
var audio = wx.getBackgroundAudioManager();
// playMusic() 函数是自定义函数
playMusic(){
audio.title = "title";
audio.src = "src";
}
audio.onPlay(){}
audio.onPause(){}
audio.onStop(){}
~~~
## **音乐播放组件demo**
使用前提:该组件需要从父组件传递两条数据(title和url)来支持音乐播放
~~~
/* music.js */
const audio = wx.getBackgroundAudioManager();
Component({
/**
* 组件的属性列表
*/
properties: {
//在外面的musci.wxml中会用到,所以需要定义。
title: String,
url: String
},
/**
* 组件的初始数据
*/
data: {
//一开始是停止播放
isPlay: false
},
/**
* 组件的方法列表
*/
methods: {
onMusic() {
if (this.data.isPlay) {
this.setData({
isPlay: false
})
audio.pause();
} else {
audio.title = this.properties.title;
audio.src = this.properties.url;
this.setData({
isPlay: true
})
}
}
},
attached(){
//点播放,开始
audio.onPlay(()=>{
this.setData({
isPlay:true
})
})
//点暂停,不播放
audio.onPause(()=>{
this.setData({
isPlay:false
})
})
//关掉的时候,不播放
audio.onStop(()=>{
this.setData({
isPlay:false
})
})
//歌曲放完的时候,自动停止
audio.onEnded(()=>{
this.setData({
isPlay:false
})
})
}
})
~~~
~~~
/* music.wxml */
<view class="music">
<image class="pictrue {{isPlay?'rotate':''}}" src="../../images/banner.png" mode="" ></image>
//判断图片是否播放,播放的时候需要旋转!
<image class="play" src="{{isPlay?'../../images/play.png':'../../images/pause.png'}}" bind:tap="onMusic" ></image>
//是否播放,图标会变化;
</view>
~~~
音乐背景图片旋转
~~~
.rotate{
animation: rotate 19s infinite;
}
@keyframes rotate{
from{
transform: rotate(0deg)
}
to{
transform: rotate(360deg)
}
}
~~~
- 小程序环境配置
- 1.生命周期
- 页面生命周期
- 组件生命周期
- 2.小程序组件
- 点击事件bindtap|catchtap
- swiper轮播
- wx:for循环
- 播放音乐
- map
- tabBar底部页面切换
- scroll-view可滚动视图区域。
- web-view装载显示网页
- priviewImage新页面预览照片
- chooseImage本地选择照片
- onReachBottom上拉刷新,加载等待条
- setStorage缓存
- showToast弹出提示框
- slot父组件wxml传递到子组件
- form表单
- 小程序.wxs,方法在.wxml调用
- 3.组件前身:模板、模板传参
- 4.自定义组件、组件传参|传wxss|wxml代码
- 5.小程序正则
- 6.小程序页面跳转
- 7.open-type 微信开放功能
- 实例
- 1.第一个实例 hello world
- 2.第二个实例豆瓣电影数据渲染
- 豆瓣1.0基本版
- 豆瓣2.0升级版
- 豆瓣3.0豪华版
- 3.第三个实例多接口在同一页面使用
- HTTP封装
- 基础报错提示,类式封装
- Promise回调,类式封装