博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
微信小程序音频背景播放
阅读量:5309 次
发布时间:2019-06-14

本文共 3813 字,大约阅读时间需要 12 分钟。

由于微信小程序官方将音频的样式固定死了,往往再工作中和UI设计师设计出来的样式不符,故一般都采用背景音频播放来实现自定义的UI样式的音频播放,即使用官网API提供的BackgroundAudioManager进行操作 也可以去官网查看详情

第一步,在对应的wxml页面添加如下代码,eg,放在index.wxml中

{
{audioTitle}}
{
{current_process}}/{
{total_process}}

第二步,对应的index.js,注意这里的playAudio方法是点击以后从后台获取音频的url和标题等信息的

//获取应用实例const app = getApp()const AUDIOMANAGER = getApp().globalData.global_bac_audio_manager.manageconst AUDIO = getApp().globalData.global_bac_audio_managerPage({  data: {    audioImg:false,    palyIcon: "./../../images/home_img_vedio_play.png",    pausIcon:"./../../images/home_img_vedio_play2.png",    audioFlag: false,    is_moving_slider: false,    current_process:"",    slider_value: "",    total_process: "",    slider_max: "",    audioTitle:"",  },    playAudio: function(e){    const item = e.currentTarget.dataset.url    AUDIOMANAGER.src = item.link_url    AUDIOMANAGER.title = item.tit // 音频标题    AUDIO.is_play= true    //背景音频播放进度更新事件    const that = this    that.setData({      audioFlag: true,      audioTitle: item.tit,      audioImg: true    })    AUDIOMANAGER.onTimeUpdate(() => {      if (!that.data.is_moving_slider) {        that.setData({          current_process: that.format(AUDIOMANAGER.currentTime),          slider_value: Math.floor(AUDIOMANAGER.currentTime),          total_process: that.format(AUDIOMANAGER.duration),          slider_max: Math.floor(AUDIOMANAGER.duration)        })      }      AUDIO.time = AUDIOMANAGER.currentTime    })    // 背景音频播放完毕    AUDIOMANAGER.onEnded(() => {        // 单曲循环        that.setData({          slider_value: 0,          current_process: '00:00',          total_process: that.format(AUDIOMANAGER.duration)        })    })  },  // 拖动进度条,到指定位置  hanle_slider_change(e) {    const position = e.detail.value    this.seekCurrentAudio(position)  },  // 拖动进度条控件  seekCurrentAudio(position) {    // 更新进度条    let that = this    wx.seekBackgroundAudio({      position: Math.floor(position),      success: function () {        AUDIOMANAGER.currentTime = position        that.setData({          current_process: that.format(position),          slider_value: Math.floor(position)        })      }    })  },  // 进度条滑动  handle_slider_move_start() {    this.setData({      is_moving_slider: true    });  },  handle_slider_move_end() {    this.setData({      is_moving_slider: false    });  },  // 时间格式化  format: function(t) {    let time = Math.floor(t / 60) >= 10 ? Math.floor(t / 60) : '0' + Math.floor(t / 60)    t = time + ':' + ((t % 60) / 100).toFixed(2).slice(-2)    return t  },    // 播放音频  playAudio1: function(){    console.log(9799875)    console.log(AUDIO.is_play)    if(AUDIO.is_play) {      AUDIOMANAGER.pause()      AUDIO.is_play = false      this.setData({        audioImg: false      })    } else {      AUDIOMANAGER.play()      AUDIO.is_play = true      this.setData({        audioImg: true      })    }  },})

第三步,由于index.js里引入了app.js的方法或者属性了,其实就是将AUDIO的方法提出来了,放在了一个公用的里面,自己单独建立公用文件或者直接写在app.js里都是可以的,这里将其放在app.js中,可以对应这修改globalData里的属性

globalData: {    userInfo: null,    global_bac_audio_manager: {      manage: wx.getBackgroundAudioManager(),      is_play: false,      id: '',      play_time: '',      article_id: '',    }  }

 index.wxss

.audioMeaage{  height: 124rpx;  display: flex;  align-items: center;}.proTime{  font-size: 20rpx;  color: #888888;}.progressWrap{  display: flex;  align-items: center;}.playIcom{  width: 84rpx;  height: 84rpx;}.slider{  /* width: 502rpx; */  }.slider1{  width: 466rpx;  margin:0 29rpx 0 8rpx;}.slider2{  width: 466rpx;  margin:0 29rpx 0 19rpx;}

 

转载于:https://www.cnblogs.com/ldlx-mars/p/11135022.html

你可能感兴趣的文章
面向对象设计中private,public,protected的访问控制原则及静态代码块的初始化顺序...
查看>>
挑战常规--不要这样使用异常
查看>>
malloc函数的用法
查看>>
渐变的参数
查看>>
C#委托详解(3):委托的实现方式大全(续)
查看>>
RaceWeb终于可以在oracle中快速建表了
查看>>
cookie,sessionStorage,localStorage
查看>>
RF环境搭建
查看>>
软件--需求管理
查看>>
读《我是一只IT小小鸟》有感
查看>>
linux中系统管理指令
查看>>
JS常用各种正则表达式
查看>>
Java 定时任务
查看>>
二分查找的平均查找长度详解【转】
查看>>
读阿里巴巴Java开发手册v1.2.0之编程规约有感【架构篇】
查看>>
基于page的简单页面推送技术
查看>>
js 日期格式化函数(可自定义)
查看>>
git报错:failed to push some refs to 'git@github.com:JiangXiaoLiang1988/CustomerHandl
查看>>
Eureka高可用,节点均出现在unavailable-replicas下
查看>>
day 21 - 1 包,异常处理
查看>>