首頁 >web前端 >uni-app >uniapp音訊進度條怎麼做

uniapp音訊進度條怎麼做

PHPz
PHPz原創
2023-05-26 10:25:071582瀏覽

在開始之前,需要了解uniapp開發中使用的兩個元件:audio音訊元件和slider滑動選擇器元件。接下來,我們可以參考以下步驟來實現音訊進度條的設計。

  1. 在頁面中加入audio元件

在頁面的template中使用audio標籤新增音訊元件,並設定src為音訊檔案的路徑。

  1. 新增進度條slider元件

新增slider元件,並設定綁定的v-model值為目前播放時間,用於控制進度條的位置。

  1. 設定音訊進度條樣式

使用CSS樣式來設定slider的樣式,包括進度條顏色、進度條滑桿樣式、進度條最大值和最小值等。

  1. 實作音訊進度條的更新

使用uniapp中的setInterval函數來更新進度條的位置,根據目前播放時間和總播放時間計算出當前進度條位置。

  1. 實作進度條的拖曳功能

當使用者拖曳進度列時,可以使用slider的@change事件來取得目前拖曳的值,並使用audio組件的seek方法跳到對應的播放位置。

最終程式碼如下:

<template>
  <view>
    <audio :src="audioSrc" @timeupdate="updateTime"></audio>
    <slider v-model="currentTime" :max="duration" @change="changeTime"></slider>
  </view>
</template>
 
<script>
  export default {
    data() {
      return {
        audioSrc: 'your-audio-src',
        duration: 0,
        currentTime: 0,
        timeUpdate: null
      }
    },
    mounted() {
      this.initAudio()
    },
    methods: {
      initAudio() {
        let audio = uni.createInnerAudioContext()
        audio.src = this.audioSrc
        audio.onTimeUpdate(() => {
          this.duration = audio.duration
          this.currentTime = audio.currentTime
        })
        audio.play()
        this.timeUpdate = setInterval(() => {
          this.currentTime = audio.currentTime
        }, 500)
      },
      updateTime(e) {
        this.currentTime = e.detail.currentTime
        this.duration = e.detail.duration
      },
      changeTime(e) {
        let audio = uni.createInnerAudioContext()
        audio.src = this.audioSrc
        audio.seek(e.detail.value)
      }
    }
  }
</script>

<style scoped>
  .uni-slider-wrapper {
    height: 8px;
    border-radius: 4px;
    background-color: #ccc;
  }
 
  .uni-slider-track {
    height: 8px;
    border-radius: 4px;
    background-color: #1cbbb4;
  }
 
  .uni-slider-thumb {
    border-radius: 12px;
    background-color: #1cbbb4;
  }
</style>

這樣,我們就可以在uniapp中實現音訊進度條的設計,讓使用者更方便地掌控音訊播放的進度。

以上是uniapp音訊進度條怎麼做的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn