最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue3中實(shí)現(xiàn)音頻播放器APlayer的方法

 更新時(shí)間:2022年08月04日 11:41:47   作者:浩星  
這篇文章主要介紹了vue3中實(shí)現(xiàn)音頻播放器APlayer的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

前言:         

vue2的時(shí)候,分享了一個(gè)很好用的插件是vue-aplayer,但是他是不支持vue3的,這里分享vue3使用APlayer來(lái)實(shí)現(xiàn)一個(gè)播放器的方法。 實(shí)現(xiàn)效果:

官方:         

git地址:點(diǎn)我         

api地址:點(diǎn)我

實(shí)現(xiàn)步驟:

1、安裝 npm:

npm install aplayer --save

Yarn:

yarn add aplayer

2、頁(yè)面中引入

import APlayer from 'APlayer';
import 'APlayer/dist/APlayer.min.css';

3、具體使用,源代碼

(1)封裝 aPlayer.vue

<template>
  <div class="mainPage" ref="playerRef"></div>
</template>
<script setup>
  import APlayer from 'APlayer';
  import 'APlayer/dist/APlayer.min.css';
  import {reactive,nextTick, onBeforeUnmount,getCurrentInstance, onMounted, ref} from 'vue'
 
  const playerRef = ref()
  const { proxy } = getCurrentInstance()
  const state = reactive({
    instance:null
  })
 
  // APlayer歌曲信息
  class Audio {
    // 音頻藝術(shù)家
    // artist: String;
    // 音頻名稱
    // name: String;
    // 音頻鏈接
    // url: String;
    // 音頻封面
    // cover: String;
    // 歌詞
    // lrc: String;
 
    constructor(artist, name, url, cover, lrc) {
      this.artist = artist;
      this.name = name;
      this.url = url;
      this.cover = cover;
      this.lrc = lrc;
    }
  }
 
  const props = defineProps({
    // 開(kāi)啟吸底模式
    fixed: {
      type: Boolean,
      default: false
    },
    // 開(kāi)啟迷你模式
    mini: {
      type: Boolean,
      default: false
    },
    // 音頻自動(dòng)播放
    autoplay: {
      type: Boolean,
      default: false
    },
    // 主題色
    theme: {
      type: String,
      default: 'rgba(255,255,255,0.2)'
    },
    // 音頻循環(huán)播放
    loop: {
      type: String,
      default: 'all' //'all' | 'one' | 'none'
    },
    // 音頻循環(huán)順序
    order: {
      type: String,
      default: 'random' //'list' | 'random'
    },
    // 預(yù)加載
    preload: {
      type: String,
      default: 'auto' //'auto' | 'metadata' | 'none'
    },
    // 默認(rèn)音量
    volume: {
      type: Number,
      default: 0.7,
      validator: (value) => {
        return value >= 0 && value <= 1;
      }
    },
    // 歌曲服務(wù)器(netease-網(wǎng)易云, tencent-qq音樂(lè), kugou-酷狗, xiami-小米音樂(lè), baidu-百度音樂(lè))
    songServer: {
      type: String,
      default: 'netease' //'netease' | 'tencent' | 'kugou' | 'xiami' | 'baidu'
    },
    // 播放類型(song-歌曲, playlist-播放列表, album-專輯, search-搜索, artist-藝術(shù)家)
    songType: {
      type: String,
      default: 'playlist'
    },
    // 歌的id
    songId: {
      type: String,
      default: '19723756'
    },
    // 互斥,阻止多個(gè)播放器同時(shí)播放,當(dāng)前播放器播放時(shí)暫停其他播放器
    mutex: {
      type: Boolean,
      default: true
    },
    // 傳遞歌詞方式
    lrcType: {
      type: Number,
      default: 3
    },
    // 列表是否默認(rèn)折疊
    listFolded: {
      type: Boolean,
      default: true
    },
    // 列表最大高度
    listMaxHeight: {
      type: String,
      default: '100px'
    },
    // 存儲(chǔ)播放器設(shè)置的 localStorage key
    storageName: {
      type: String,
      default: 'aplayer-setting'
    }
  })
  onMounted(() => {
    let str = {
      server:props.songServer,
      type:props.songType,
      id:props.songId
    }
    proxy.$api.common.getSongSheet(str).then(res=>{
      let audioList = res.data.map(value => new Audio(value.author, value.title, value.url, value.pic, value.lrc));
      state.instance = new APlayer({
        container: playerRef.value,
        fixed: props.fixed,
        mini: props.mini,
        autoplay: props.autoplay,
        theme: props.theme,
        loop: props.loop,
        order: props.order,
        preload: props.preload,
        volume: props.volume,
        mutex: props.mutex,
        lrcType: props.lrcType,
        listFolded: props.listFolded,
        listMaxHeight: props.listMaxHeight,
        storageName: props.storageName,
        audio: audioList
      })
    })
    // 銷毀
    onBeforeUnmount(() => {
      state.instance.destroy()
    })
  })
</script>
 
<style lang='scss' scoped>
  .mainPage{
    @include wh(100%,auto);
    background: #FCFCFC;
    border: 1px solid #E0E0E0;
    border-radius: 4px;
 
  }
</style>

(2)父組件調(diào)用

 <a-player></a-player>

其他:         

vue3+ts+aplayer版本:點(diǎn)我

到此這篇關(guān)于vue3中實(shí)現(xiàn)音頻播放器APlayer的文章就介紹到這了,更多相關(guān)vue3音頻播放器APlayer內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue便簽的簡(jiǎn)單實(shí)現(xiàn)

    Vue便簽的簡(jiǎn)單實(shí)現(xiàn)

    本文主要介紹了Vue便簽的簡(jiǎn)單實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • 詳解vue更改頭像功能實(shí)現(xiàn)

    詳解vue更改頭像功能實(shí)現(xiàn)

    這篇文章主要介紹了vue更改頭像功能實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • vue使用monaco?editor漢化右鍵菜單示例

    vue使用monaco?editor漢化右鍵菜單示例

    這篇文章主要為大家介紹了vue使用?monaco?editor?漢化右鍵菜單實(shí)現(xiàn)漢化示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • vue項(xiàng)目使用高德地圖時(shí)報(bào)錯(cuò):AMap?is?not?defined解決辦法

    vue項(xiàng)目使用高德地圖時(shí)報(bào)錯(cuò):AMap?is?not?defined解決辦法

    這篇文章主要給大家介紹了關(guān)于vue項(xiàng)目使用高德地圖時(shí)報(bào)錯(cuò):AMap?is?not?defined的解決辦法,"AMap is not defined"是一個(gè)錯(cuò)誤提示,意思是在代碼中沒(méi)有找到定義的AMap,需要的朋友可以參考下
    2023-12-12
  • 圖片預(yù)覽插件vue-photo-preview的使用示例詳解

    圖片預(yù)覽插件vue-photo-preview的使用示例詳解

    這篇文章主要介紹了圖片預(yù)覽插件vue-photo-preview的使用,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-08-08
  • ElementUI中el-tree節(jié)點(diǎn)的操作的實(shí)現(xiàn)

    ElementUI中el-tree節(jié)點(diǎn)的操作的實(shí)現(xiàn)

    這篇文章主要介紹了ElementUI中el-tree節(jié)點(diǎn)的操作的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • vue實(shí)現(xiàn)歌手列表字母排序下拉滾動(dòng)條側(cè)欄排序?qū)崟r(shí)更新

    vue實(shí)現(xiàn)歌手列表字母排序下拉滾動(dòng)條側(cè)欄排序?qū)崟r(shí)更新

    這篇文章主要介紹了vue實(shí)現(xiàn)歌手列表字母排序,下拉滾動(dòng)條側(cè)欄排序?qū)崟r(shí)更新,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-05-05
  • vue實(shí)際運(yùn)用之vuex持久化詳解

    vue實(shí)際運(yùn)用之vuex持久化詳解

    這篇文章主要為大家介紹了vue運(yùn)用之vuex持久化,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2021-12-12
  • Vue中動(dòng)態(tài)class的多種寫(xiě)法

    Vue中動(dòng)態(tài)class的多種寫(xiě)法

    這篇文章主要介紹了Vue之動(dòng)態(tài)class的幾種寫(xiě)法,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-12-12
  • vue實(shí)現(xiàn)倒計(jì)時(shí)獲取驗(yàn)證碼效果

    vue實(shí)現(xiàn)倒計(jì)時(shí)獲取驗(yàn)證碼效果

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)倒計(jì)時(shí)獲取驗(yàn)證碼效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-09-09

最新評(píng)論

独山县| 昭苏县| 炉霍县| 英山县| 宣化县| 轮台县| 扬州市| 兰州市| 新疆| 左贡县| 拉萨市| 三台县| 东平县| 拜泉县| 泰宁县| 兰州市| 岗巴县| 陕西省| 镇赉县| 广平县| 阿巴嘎旗| 广宁县| 屯昌县| 韩城市| 文水县| 平定县| 西宁市| 北海市| 广德县| 镶黄旗| 秀山| 临猗县| 泸西县| 连江县| 秦安县| 宁乡县| 吴堡县| 射阳县| 新宁县| 宁晋县| 黎川县|