国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

原生微信小程序,多音頻播放實(shí)現(xiàn)進(jìn)度條功能

這篇具有很好參考價(jià)值的文章主要介紹了原生微信小程序,多音頻播放實(shí)現(xiàn)進(jìn)度條功能。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

小程序的音頻組件沒有進(jìn)度條的功能,業(yè)務(wù)需要,只好燒腦自己實(shí)現(xiàn)。

邏輯思路:

1.所有音頻播放、停止按鈕使用狀態(tài)切換控制
2.當(dāng)點(diǎn)擊某個(gè)音頻播放時(shí),首先將所有音頻的狀態(tài)置為停止?fàn)顟B(tài),然后將當(dāng)前音頻置為播放狀態(tài)
3.滾動(dòng)條插件配合音頻控件一起使用
4.播放狀態(tài)時(shí)滾動(dòng)條的長度隨音頻進(jìn)度變化而變化,時(shí)間只需要顯示總時(shí)長
5.拖動(dòng)滾動(dòng)條時(shí),音頻的播放當(dāng)前位置的聲音

UI設(shè)計(jì)效果:

原生微信小程序,多音頻播放實(shí)現(xiàn)進(jìn)度條功能

?代碼如下:

<view wx:if="{{currentIndex == index}}" class="sliderBox">
      <slider class="slider_middle" catchchange="changeSlide" bindtouchstart="start"             bindtouchend="end" max="{{item.duration}}" min="0" value="{{item.currentProcessNum}}" block-size="12" data-index="{{index}}" activeColor="#F19831" block-color="#F19831"></slider>
       <text class="right_text">{{item.showTotalTime}}</text>
</view>


<image src="../../images/img/{{item.showAudio ? 'suspend_cheng' : 'play_cheng'}}.png" mode="widthFix" class="play_cheng" style="margin-top: {{currentIndex == index ? 54 : 34}}rpx;" bindtap="playAudio" data-index="{{index}}" data-src="{{serverAddress}}{{item.address}}" data-name="{{item.courseName}}"/>
.sliderBox {
  width: 100%;
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin: 20rpx 0 0 0;
}
.slider_middle {
  width: calc(100% - 80rpx);
  margin: 0;
}
.right_text {
  color: #F19831;
  font-size: 24rpx;
}
 data: {
    meditationCourse: null,   //數(shù)據(jù)
    currentIndex: null,   //要展示的音頻進(jìn)度條的下標(biāo)
    audio: null,   //音頻
  },

//獲取到數(shù)據(jù),處理后 賦值
getData(){
     res.data.data.hcCourseResultList.forEach(item => {
         item.isMove = false   //是否觸發(fā)滾動(dòng)條的移動(dòng)
         item.showAudio = false   //是否播放
         item.currentProcessNum = 0   //當(dāng)前播放的進(jìn)程
         item.showTotalTime = this._getMinuteBySecond(item.duration)   //顯示的總時(shí)長
    })
       
    this.setData({
         meditationCourse: res.data.data
    })
},
 // 秒轉(zhuǎn)分
  _getMinuteBySecond(seconds) {
    let minute = Math.floor(seconds / 60);
    let second = seconds % 60
    minute < 10 ? minute = '0' + minute : '';
    second < 10 ? second = '0' + second : '';
    return minute + ":" + second
  },


// 點(diǎn)擊播放和暫停音頻
  playAudio(e) {
    let that = this;
    let index = e.currentTarget.dataset.index
    let arr = that.data.meditationCourse.hcCourseResultList
    let srcAddress = e.currentTarget.dataset.src
    // 暫停當(dāng)前音頻
    if(arr[index].showAudio) {
      that._setAudioType(index, false)
      that.data.audio.pause()
      return
    }
    if(that.data.currentIndex == index && !arr[index].showAudio) {
      that._setAudioType(index, true)
      that.data.audio.play()
      return
    }

    if (that.data.audio) {   //將播放的音頻停止
      that.data.audio.pause()
    }
    arr.forEach((item, index) => {   //將所有的音頻置為停止?fàn)顟B(tài)
      that._setAudioType(index, false)
    })
    that._setAudioType(index,true)   //將當(dāng)前音頻置為播放狀態(tài)
    that.setData({
      currentIndex: index   //設(shè)置當(dāng)前要展示的音頻進(jìn)度條
    })
    
    that.data.audio = wx.getBackgroundAudioManager();//初始化音頻并播放
    that.data.audio.src = srcAddress
    that.data.audio.title = e.currentTarget.dataset.name   //音頻標(biāo)題  必填
    that.data.audio.autoplay = true
    that.data.audio.play();

    //音頻開始播放的時(shí)間 和 進(jìn)度條的當(dāng)前值為0 
    that.data.audio.startTime = 0
    let currentProcessNum = `meditationCourse.hcCourseResultList[${index}].currentProcessNum`
    that.setData({
      [currentProcessNum]: 0
    })
  
    //音頻自然播放結(jié)束
    that.data.audio.onEnded(function name(params) {
      console.log('音頻自然播放結(jié)束')
    })

    //音頻進(jìn)度播放更新
    that.data.audio.onTimeUpdate(function () {
      //沒有觸動(dòng)滑動(dòng)事件 更新進(jìn)度
      if(!arr[index].isMove){
        that._setCurrent(index)
      }
   })
  },
  //開始滑動(dòng)觸發(fā)
  start : function (e) {
    let index = e.currentTarget.dataset.index
    this.move(index,true)
    this.data.audio.pause()
  },
  //觸發(fā)滑動(dòng)條
  changeSlide : function (e) {
    let that = this
    let index = e.currentTarget.dataset.index
    const position = e.detail.value
    
    let currentProcessNum = `meditationCourse.hcCourseResultList[${index}].currentProcessNum`
    that.setData({
     [currentProcessNum]: position
    })

    that.data.audio.seek = position
    wx.seekBackgroundAudio({
      position: Math.floor(position),
    })
  },

  //結(jié)束滑動(dòng)觸發(fā)
  end : function (e) {
    let index = e.currentTarget.dataset.index
    this.move(index, false)
    this.data.audio.play()
    if(!this.data.meditationCourse.hcCourseResultList[index].showAudio) {
      this._setAudioType(index, true)
    }
  },
  //設(shè)置音頻圖片狀態(tài)以及滾動(dòng)條可播放狀態(tài)函數(shù)
  _setAudioType: function (index, tag) {
      let that = this
      let showAudio = `meditationCourse.hcCourseResultList[${index}].showAudio`
      that.setData({
        [showAudio]: tag
      })
  },
  //設(shè)置 滾動(dòng)條當(dāng)前位置函數(shù)
 _setCurrent: function (index) {
   let currentProcessNum = `meditationCourse.hcCourseResultList[${index}].currentProcessNum`
   this.setData({
     [currentProcessNum]: this.data.audio.currentTime
   })
 },
 //設(shè)置滾動(dòng)條是否滾動(dòng)狀態(tài)函數(shù)
 move:function (index,isMove) {
   let isMoveValue = `meditationCourse.hcCourseResultList[${index}].isMove`
    this.setData({
      [isMoveValue]: isMove
    })
 },

實(shí)現(xiàn)效果:

原生微信小程序,多音頻播放實(shí)現(xiàn)進(jìn)度條功能

?文章來源地址http://www.zghlxwxcb.cn/news/detail-509335.html

到了這里,關(guān)于原生微信小程序,多音頻播放實(shí)現(xiàn)進(jìn)度條功能的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 原生微信小程序?qū)崿F(xiàn)手寫簽名功能

    原生微信小程序?qū)崿F(xiàn)手寫簽名功能

    項(xiàng)目中有遇到在小程序上實(shí)現(xiàn)手動(dòng)簽名功能,今天給大家分享下代碼 wxml 文件代碼如下,catchtouchmove屬性一定要加上,否則移動(dòng)起來連筆非常不流暢 wxss代碼 js代碼 效果如下

    2024年02月16日
    瀏覽(23)
  • 微信小程序播放器的一些簡單功能實(shí)現(xiàn)

    微信小程序播放器的一些簡單功能實(shí)現(xiàn)

    一、構(gòu)建npm(后面用到moment的格式化時(shí)間) 二、系統(tǒng)后臺(tái)監(jiān)測程序播放器配置(系統(tǒng)后臺(tái)要知道該播放器是否在播放歌曲,并有一些簡單的業(yè)務(wù)邏輯) 在app.json中添加以下代碼----和tarbar同級(jí) 三、由于后面用到后臺(tái)需要監(jiān)測是哪首歌,需要有id和播放狀態(tài) 在app.js中添加如下代

    2024年01月23日
    瀏覽(108)
  • 微信小程序?qū)崿F(xiàn)一個(gè)音樂播放器的功能

    1.頁面包含一個(gè)音樂列表,點(diǎn)擊列表中的音樂可以播放對(duì)應(yīng)的音樂。 2.播放中的音樂在列表中有標(biāo)識(shí),并且可以暫?;蚶^續(xù)播放。 3.顯示當(dāng)前音樂的播放進(jìn)度和總時(shí)長,并可以拖動(dòng)進(jìn)度條調(diào)整播放進(jìn)度。 4.點(diǎn)擊切換按鈕可以切換到下一首音樂。 5.點(diǎn)擊循環(huán)按鈕可以切換音樂的

    2024年01月22日
    瀏覽(35)
  • 微信小程序 ---播放音頻

    微信小程序 ---播放音頻

    功能描述:一進(jìn)頁面就會(huì)播放音樂,點(diǎn)擊暫停再次點(diǎn)擊后可以開始播放,退出頁面后播放停止。 HTML:

    2024年02月11日
    瀏覽(17)
  • 微信小程序中音頻播放

    如何在小程序中實(shí)現(xiàn)音頻播放 需要注意幾點(diǎn) 由于現(xiàn)在官方不再維護(hù) audio 組件 ,所以音頻播放盡可能采取 wx.createInnerAudioContext() 接口 ( 若需要在后臺(tái)播放,則采用 wx.getBackgroundAudioManager() ) 音頻播放,只有在播放時(shí)才可以獲取到音頻長度(參考了多個(gè)帶音頻的小程序 qq音樂

    2024年02月08日
    瀏覽(42)
  • 微信小程序原生開發(fā)功能合集十五:個(gè)人主頁功能實(shí)現(xiàn)

    微信小程序原生開發(fā)功能合集十五:個(gè)人主頁功能實(shí)現(xiàn)

    ??本章個(gè)人主頁功能實(shí)現(xiàn),展示當(dāng)前登錄用戶信息、個(gè)人主頁、修改密碼、瀏覽記錄、我的收藏、常見問題、意見反饋、關(guān)于我們等界面及對(duì)應(yīng)功能實(shí)現(xiàn)。 ??另外還提供小程序開發(fā)基礎(chǔ)知識(shí)講解課程,包括小程序開發(fā)基礎(chǔ)知識(shí)、組件封裝、常用接口組件使用及常用功能實(shí)

    2024年02月06日
    瀏覽(26)
  • 微信小程序原生開發(fā)功能合集十六:系統(tǒng)主頁實(shí)現(xiàn)

    微信小程序原生開發(fā)功能合集十六:系統(tǒng)主頁實(shí)現(xiàn)

    ??本章實(shí)現(xiàn)小程序主頁開發(fā)及對(duì)應(yīng)邏輯處理,實(shí)現(xiàn)問卷填報(bào)相關(guān)功能,實(shí)現(xiàn)問卷查看、問卷查看、填報(bào)歷史等功能的實(shí)現(xiàn)。 ??另外還提供小程序開發(fā)基礎(chǔ)知識(shí)講解課程,包括小程序開發(fā)基礎(chǔ)知識(shí)、組件封裝、常用接口組件使用及常用功能實(shí)現(xiàn)等內(nèi)容,具體如下: ??

    2024年02月10日
    瀏覽(23)
  • 微信小程序原生開發(fā)功能合集十二:編輯界面的實(shí)現(xiàn)

    微信小程序原生開發(fā)功能合集十二:編輯界面的實(shí)現(xiàn)

    ??本章實(shí)現(xiàn)編輯界面的實(shí)現(xiàn)處理,包括各編輯組件的使用及添加數(shù)據(jù)保存數(shù)據(jù)流程的實(shí)現(xiàn)處理。 ??另外還提供小程序開發(fā)基礎(chǔ)知識(shí)講解課程,包括小程序開發(fā)基礎(chǔ)知識(shí)、組件封裝、常用接口組件使用及常用功能實(shí)現(xiàn)等內(nèi)容,具體如下: ?? 1. CSDN課程: https://edu.csdn.ne

    2024年02月02日
    瀏覽(99)
  • uniapp—— 微信小程序ios上音頻播放沒有聲音

    uniapp—— 微信小程序ios上音頻播放沒有聲音

    uniapp 打包小程序后發(fā)現(xiàn) 播放音頻文件? 沒有報(bào)錯(cuò), 一切正常只是沒有聲音,后來發(fā)現(xiàn)是ios手機(jī)開啟了靜音模式導(dǎo)致聽不到聲音,查看uniapp 文檔: ?發(fā)現(xiàn)的確有這個(gè)屬性,但是設(shè)置了 之后發(fā)現(xiàn)并沒有起作用 后來發(fā)現(xiàn)想要實(shí)現(xiàn)ios靜音模式下也可以播放音頻要用另一個(gè)api全局配

    2024年02月13日
    瀏覽(114)
  • 微信小程序音頻播放問題createInnerAudioContext為何不調(diào)用onTimeUpdate

    廢話不多說,直接這么寫就可以解決: ? ? innerAudioContext.play(); ? ?? ? ? innerAudioContext.onCanplay(() = { ? ? ? innerAudioContext.play(); ? ? ? ? console.log(\\\'開始播放\\\') ? ? }); ? ? innerAudioContext.onWaiting(() = { ? ? ? ? innerAudioContext.pause() ? ? }); 主要涉及這幾個(gè)方法

    2024年02月15日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包