小程序使用createInnerAudioContext实现音乐播放

实现效果:点击图片音乐开始播放,图片旋转,再点击暂停,图片暂停旋转,等音乐全部播放完成,图片暂停旋转

wxml:

<view class="top">
  <view class="center" style="animation-play-state:{{rocate}}">
    <image bindtap="play" mode="aspectFit" src="cloud://cloud1-2gjflokc7f174718.636c-cloud1-2gjflokc7f174718-1308882505/img1.jpg" alt=""/>
  </view>
</view>

wxss:

/* pages/musuc/music.wxss */
.top{
  width: 500rpx;
  height: 500rpx;
  border-radius: 50% 50%;
  background: url('//s3.music.126.net/mobile-new/img/disc.png?d3bdd1080a72129346aa0b4b4964b75f='); 
  background-size: 100% 100%;
  margin: 0 auto;
}
.top .center{
  width: 65%;
  height: 65%;
  margin-left: 17.5%;
  margin-top: 17.5%;
  border-radius: 50% 50%;
  overflow: hidden;
  background-color: brown;
  transform-style: preserve-3d;
  animation: myrocate 10s linear infinite; 
}
.top .center image{
  width: 100%;
  height: 100%;
} 
@keyframes myrocate{
  from{transform: rotateZ(0deg);}
  to{transform: rotateZ(360deg);}
}

js:

// pages/musuc/music.js

const innerAudioContext = wx.createInnerAudioContext()
// innerAudioContext.autoplay = true
innerAudioContext.src = 'cloud://cloud1-2gjflokc7f174718.636c-cloud1-2gjflokc7f174718-1308882505/金玟岐 - 岁月神偷.mp3'
innerAudioContext.onPlay(() => {
  console.log('开始播放')
})
innerAudioContext.onStop(()=>{
  console.log('结束')
})
innerAudioContext.onError((res) => {
  console.log(res.errMsg)
  console.log(res.errCode)
})
var timer
Page({
    
  /**
   * 页面的初始数据
   */
  data: {
    isplay: false,
    tran:"trans",
    rocate:"paused"
  },
  play(){
    if(this.data.isplay == false){
      this.setData({
        isplay: true 
      })
      this.setData({
        rocate:"running"
      })
      innerAudioContext.play()
      
    }else{
      this.setData({
        isplay: false 
      })
      this.setData({
        rocate:"paused"
      })
      innerAudioContext.pause()
      console.log(innerAudioContext.currentTime)
      console.log(innerAudioContext.duration)
    }
    timer= setInterval(()=>{
      if(innerAudioContext.currentTime == innerAudioContext.duration
        && innerAudioContext.duration!=0){
        this.setData({
          rocate:"paused"
        })
        clearInterval(timer)
      }
    },30)
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值