• 技术文章 >微信小程序 >小程序开发

    小程序怎么做音乐播放条

    angryTomangryTom2020-03-19 18:06:04原创1767

    php入门到就业线上直播课:进入学习

    小程序怎么做音乐播放条

    可以使用progress组件实现音乐播放条,具体做法如下:

    1、添加一个audio标签,不指定controls="true"属性即可隐藏。

     <view class="audio-play">
        <audio src=""></audio>
      </view>
      
      <view>
        <view class="one-column play-it" bindtap="playMusic">
          <view>点击播放</view>
        </view>
        
        <progress class="music-prog" bindtouchmove="setTouchMove" percent="{{musicPercent}}"></progress>
        
        <view class="percent-num">{{musicPercent}}%</view>
      </view>

    bindtouchmove表示触摸事件;

    progress标签通过percent属性设置进度

    2、编写WSS文件

    推荐学习:小程序开发

    .play-it{
      margin-left: 300rpx;
    }
    
    .music-prog{
      width: 550rpx;
      height: 10rpx;
      margin: 50rpx 100rpx;
      color: #0099ff;
      background-color: #999;
    }
    
    .percent-num{
      margin: -20rpx 0 0 100rpx;
      font-size: 28rpx;
    }

    3、编写js,控制播放条。

    onShow() {
        // 监听音乐播放
        let that = this
        wx.onBackgroundAudioPlay(() => {
          that.timer && clearInterval(that.timer)
          that.timer = setInterval(() => {
            wx.getBackgroundAudioPlayerState({
              success: res => {
                let per = (res.currentPosition/res.duration)*10000
                that.setData({
                  musicPercent: Math.round(per)/100 + '',
                  duration: res.duration
                })
              }
            })
          }, 1000)
        })
    
        // 监听背景音频暂停事件
        wx.onBackgroundAudioPause(() => {
          clearInterval(that.timer)
        })
    
        // 监听背景音频停止事件
        wx.onBackgroundAudioStop(() => {
          clearInterval(that.timer)
        })
      },
      
      playMusic() {
     	 let obj = {
           dataUrl: 'http://p6jceeddp.bkt.clouddn.com/%E5%B0%A4%E9%95%BF%E9%9D%96%20-%20%E6%98%A8%E6%97%A5%E9%9D%92%E7%A9%BA.mp3',
            title: '昨日青空',
            coverImgUrl: '/static/images/avatar.png'
          }
          wx.playBackgroundAudio(obj)
        },
     
      setTouchMove (e) {
        if(e.touches[0].clientY >= 390 && e.touches[0].clientY <= 410) {
          if (e.touches[0].clientX >= 55 && e.touches[0].clientX <= 355) {
            let percent = (e.touches[0].clientX - 55)/300*10000
            this.setData({
              musicPercent: Math.round(percent)/100 + ''
            })
            this.data.current = (this.data.musicPercent/100)*this.data.duration
          }
        }
      },
      
      setProgress() {
        let that = this
        console.log('bindtouchend')
        wx.getBackgroundAudioPlayerState({
          success: res => {
            that.data.current !== res.currentPosition &&
            wx.seekBackgroundAudio({
              position: that.data.current,
              success () {
                console.log('seek', that.data.current)
              }
            })
          }
        })
      }

    播放条的有效区域

    横向: e.touches[0].clientX

    纵向: e.touches[0].clientY

    此处横向为 55~355 ,纵向为 390~410

    定义触摸事件

    获取到的横向进度条位置,计算用户所拖拽到的进度条位置

    **注意:在此处调用wx.seekBackgroundAudio()设置播放进度,会导致音频出现卡顿的效果。因为用户拖动的过程中会多次调用seek方法,所以应该把设置播放进度放在拖动进度条完成之后再执行。

    touchend监听触摸事件的停止

    根据触摸事件中计算得到的时间current,调用wx.seekBackgroundAudio()设置播放进度

    效果:

    微信截图_20200319180054.png

    PHP中文网,大量网站建设教程,欢迎学习!

    以上就是小程序怎么做音乐播放条的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    专题推荐:小程序 音乐 播放条
    上一篇:小程序只能微信登录吗 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• 小程序自定义属性怎么获取的• 小程序注册需不需要钱• 小程序中怎么设置苹果苹方字体• 小程序只能微信登录吗
    1/1

    PHP中文网