微信小程序—InnerAudioContext实现一个音乐播放器

本文详细介绍了一款具备音乐播放、进度控制、封面旋转动画及背景模糊效果的小程序开发过程,涵盖从界面设计到功能实现的全部代码。

直接上效果:

在这里插入图片描述

体验:

自定义系列>>音乐播放器
在这里插入图片描述
功能描述:
1、可播放、暂停内置的一条音乐
2、可控制播放进度
3、音乐封面在播放过程中实现旋转动画
4、背景图片表现为音乐封面的高斯模糊
5、离开页面音乐停止播放

完整代码:

js

const app = getApp()
const innerAudioContext = wx.createInnerAudioContext();
var _animation; // 动画实体
var _animationIndex = 0; // 动画执行次数index(当前执行了多少次)
var _animationIntervalId = -1; // 动画定时任务id,通过setInterval来达到无限旋转,记录id,用于结束定时任务
const _ANIMATION_TIME = 200; // 动画播放一次的时长ms
Page({
   
   
  data: {
   
   
    menuButtonBoundingClientRect:{
   
   },
    systemInfo:{
   
   },
    clickPlay: true,
    playSrc: 'play-normal.png',
    preSrc: './pre-normal.png',
    nextSrc: './next-normal.png',
    animation: '',
    isRing: false,

    audiolist: [
      {
   
   
        audiosrc: 'https://6e6f-normal-env-4598.tcb.qcloud.la/mp3/04a9_485d_772f_2493d24b7f1b040256002d8283a4cad0.mp3?sign=b4889da8c5373cad5279086359f27fcc&t=1583118236',
  audioImage:"cloud://normal-env-t6f-normal-etac-1300924598/meinv/u=2367451530,795833927&fm=26&gp=0.jpg",audioName:"上海滩",
      }
    ],
    isPlayAudio: false,
    audioSeek: 0,
    audioDuration: 0,
    showTime1: '00:00',
    showTime2: '00:00',
    audioTime: 0,
    textVoiceMarginTop: '',
    viewCircleContainerMarginTop: '',
    audioPlayerMarginTop: '',
    controlContainerMarginTop: '',
  },
  go2Home() {
   
   
    wx.navigateBack({
   
   
      delta: 1,
    })
  },
  onLoad: function (options) {
   
   
    var that = this
    wx.getSystemInfo({
   
   
      success: function (res) {
   
   
        //model中包含着设备信息
        console.log(res)
        that.setData({
   
   
          menuButtonBoundingClientRect: wx.getMenuButtonBoundingClientRect(),
          systemInfo:res
        })
        var model = res.model
        if (model.search('iPhone X') != -1) {
   
   
          app.globalData.isIpx = true;
        } else {
   
   
          app.globalData.isIpx = false;
        }
      }
    })
    console.log(app.globalData.isIpx)
    let isPhone = app.globalData.isIpx;
    if (isPhone) {
   
   
      this.setData({
   
   
        textVoiceMarginTop: "105rpx",
        viewCircleContainerMarginTop: "100rpx",
        audioPlayerMarginTop: "200rpx",
        controlContainerMarginTop: "100rpx",
      })
    } else {
   
   
      this.setData({
   
   
        textVoiceMarginTop: "60rpx",
        viewCircleContainerMarginTop: "80rpx",
        audioPlayerMarginTop: "140rpx",
        controlContainerMarginTop: "30rpx"
      })
    }
  },
  touchPreStart: function () {
   
   
    var preSrc = this.data.preSrc;
    this.setData({
   
   
      preSrc: './pre-normal.png'
    })
  },
  touchPreEnd: function () {
   
   
    var preSrc = this.data.preSrc;
    this.setData({
   
   
      preSrc: './pre-normal.png'
    })
  },
  touchNextStart: function () {
   
   
    var nextSrc = this.data.nextSrc;
    this.setData({
   
   
      nextSrc: './next-normal.png'
    })
  },
  touchNextEnd: function () {
   
   
    var nextSrc = this.data.nextSrc;
    this.setData({
   
   
      nextSrc: './next-normal.png'
    })
  },
  changePlay: function () {
   
   
    var playSrc 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玩烂小程序

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值