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

微信小程序實現一個音樂播放器的功能

這篇具有很好參考價值的文章主要介紹了微信小程序實現一個音樂播放器的功能。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

要求

1.頁面包含一個音樂列表,點擊列表中的音樂可以播放對應的音樂。
2.播放中的音樂在列表中有標識,并且可以暫停或繼續(xù)播放。
3.顯示當前音樂的播放進度和總時長,并可以拖動進度條調整播放進度。
4.點擊切換按鈕可以切換到下一首音樂。
5.點擊循環(huán)按鈕可以切換音樂的播放模式(單曲循環(huán)、列表循環(huán)、隨機播放)。

代碼實現

wxml 文件

<view class="container">
  <scroll-view scroll-y class="music-list">
    <view wx:for="{{ musicList }}" wx:key="{{ index }}" class="music-item" bindtap="onMusicTap" data-index="{{ index }}">
      <view class="music-name">{{ item.name }}</view>
      <view class="music-artist">{{ item.artist }}</view>
    </view>
  </scroll-view>
  <audio id="audio" src="{{ currentMusic.src }}" bindtimeupdate="onTimeUpdate" bindended="onEnded"></audio>
  <view class="player">
    <view class="controls">
      <button class="control-btn" bindtap="onPrev">上一首</button>
      <button class="control-btn" bindtap="onPlayOrPause">{{ playing ? '暫停' : '播放' }}</button>
      <button class="control-btn" bindtap="onNext">下一首</button>
      <button class="control-btn" bindtap="onChangeMode">模式</button>
    </view>
    <view class="progress">
      <text>{{ currentTime }}</text>
      <slider max="{{ duration }}" value="{{ currentPosition }}" bindchange="onSliderChange" />
      <text>{{ durationStr }}</text>
    </view>
  </view>
</view>

wxss 文件

.container {
  padding: 20rpx;
}

.music-list {
  height: 300rpx;
}

.music-item {
  padding: 10rpx;
  border-bottom: 1rpx solid #eee;
  text-align: left;
}

.player {
  margin-top: 20rpx;
  display: flex;
  flex-direction: column;
  align-items: center;
}

.controls {
  display: flex;
  justify-content: space-around;
  width: 100%;
  margin-bottom: 10rpx;
}

.control-btn {
  background-color: #009688;
  color: #fff;
  padding: 10rpx 20rpx;
  border-radius: 4rpx;
}

progress {
  display: flex;
  align-items: center;
}

.slider {
  flex: 1;
  margin: 0 10rpx;
}

js文件

Page({
  data: {
    musicList: [
      { name: '歌曲1', artist: '歌手1', src: 'music1.mp3' },
      { name: '歌曲2', artist: '歌手2', src: 'music2.mp3' },
      // 更多音樂...
    ],
    currentMusic: {},
    playing: false,
    duration: 0,
    currentPosition: 0,
    currentTime: '00:00',
    durationStr: '00:00',
    playMode: 0, // 0: 列表循環(huán),1: 單曲循環(huán),2: 隨機播放
  },

  onMusicTap(e) {
    const index = e.currentTarget.dataset.index;
    const music = this.data.musicList[index];
    this.setData({
      currentMusic: music,
      playing: true,
    });
    this.playMusic();
  },

  onPlayOrPause() {
    if (this.data.playing) {
      this.pauseMusic();
    } else {
      this.playMusic();
    }
  },

  playMusic() {
    const audio = this.selectComponent('#audio');
    audio.play();
    this.setData({
      playing: true,
    });
  },

  pauseMusic() {
    const audio = this.selectComponent('#audio');
    audio.pause();
    this.setData({
      playing: false,
    });
  },

  onPrev() {
    let currentIndex = this.data.musicList.findIndex(item => item.src === this.data.currentMusic.src);
    if (currentIndex === 0) {
      currentIndex = this.data.musicList.length - 1;
    } else {
      currentIndex--;
    }
    const music = this.data.musicList[currentIndex];
    this.setData({
      currentMusic: music,
      playing: true,
    });
    this.playMusic();
  },

  onNext() {
    let currentIndex = this.data.musicList.findIndex(item => item.src === this.data.currentMusic.src);
    if (currentIndex === this.data.musicList.length - 1) {
      currentIndex = 0;
    } else {
      currentIndex++;
    }
    const music = this.data.musicList[currentIndex];
    this.setData({
      currentMusic: music,
      playing: true,
    });
    this.playMusic();
  },

  onTimeUpdate(e) {
    const duration = e.detail.duration;
    const currentPosition = e.detail.currentTime;
    const currentTime = this.formatTime(currentPosition);
    const durationStr = this.formatTime(duration);
    this.setData({
      duration: duration,
      currentPosition: currentPosition,
      currentTime: currentTime,
      durationStr: durationStr,
    });
  },

  onEnded() {
    if (this.data.playMode === 1) {
      // 單曲循環(huán)
      const audio = this.selectComponent('#audio');
      audio.seek(0);
      audio.play();
    } else {
      this.onNext();
    }
  },

  onSliderChange(e) {
    const value = e.detail.value;
    const audio = this.selectComponent('#audio');
    audio.seek(value);
  },

  onChangeMode() {
    let playMode = this.data.playMode;
    playMode = (playMode + 1) % 3;
    this.setData({
      playMode: playMode,
    });
  },

  formatTime(time) {
    const minutes = Math.floor(time / 60);
    const seconds = Math.floor(time % 60);
    const minuteStr = minutes < 10 ? '0' + minutes : '' + minutes;
    const secondStr = seconds < 10 ? '0' + seconds : '' + seconds;
    return minuteStr + ':' + secondStr;
  },
});

解析

其中,onPrev() 和 onNext() 函數實現了切換到上一首和下一首音樂的邏輯。通過 findIndex()
函數找到當前音樂在列表中的位置,然后根據播放模式計算出下一首或上一首音樂的位置,更新當前音樂并播放。

onTimeUpdate() 函數實現了更新播放進度的邏輯,通過 detail 參數獲取音頻的總時長和當前播放進度,并格式化成 00:00
的形式,更新頁面數據。

onEnded() 函數實現了音樂播放結束的邏輯,根據當前的播放模式決定是單曲循環(huán)還是切換到下一首音樂。

onSliderChange() 函數實現了調整播放進度的邏輯,通過 seek() 函數跳轉到指定的時間點。

onChangeMode() 函數實現了切換播放模式的邏輯,通過取余操作循環(huán)切換三種播放模式。

到這里也就結束了,希望對您有所幫助。文章來源地址http://www.zghlxwxcb.cn/news/detail-814720.html

到了這里,關于微信小程序實現一個音樂播放器的功能的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 案例115:基于微信小程序的音樂播放器的設計與實現

    案例115:基于微信小程序的音樂播放器的設計與實現

    文末獲取源碼 開發(fā)語言:Java 框架:SSM JDK版本:JDK1.8 數據庫:mysql 5.7 開發(fā)軟件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序開發(fā)軟件:HBuilder X 小程序運行軟件:微信開發(fā)者 目錄 目錄 前言 系統(tǒng)展示 系統(tǒng)首頁界面的設計實現 用戶注冊功能的設計實現 用戶登

    2024年02月02日
    瀏覽(25)
  • 基于微信小程序音樂播放器的設計與實現畢業(yè)設計源碼271156

    基于微信小程序音樂播放器的設計與實現畢業(yè)設計源碼271156

    Springboot音樂播放小程序的設計與實現 摘?要 本文設計了一種基于微信小程序的音樂播放器,系統(tǒng)為人們提供了方便快捷、即用即搜的音樂搜索播放服務,包括音樂資訊、音樂庫推薦、交流論壇、注冊登錄、最近播放列表功能等,用戶不僅能夠方便快捷地查看資訊、還能搜索

    2023年04月24日
    瀏覽(20)
  • 微信小程序--音樂播放器

    微信小程序--音樂播放器

    說明: 這個項目旨在練習組件以及頁面的設計。頁面和交互的實現可能有多種方式,這里只為了對組件和項目的結構進行熟悉了解。后續(xù)會有更加完善的項目。 由于涉及到mp3外鏈導入音樂,預覽二維碼在外鏈失效時會出錯,這里不放預覽二維碼了;另預覽二維碼存在有效時

    2024年02月09日
    瀏覽(24)
  • 微信小程序音樂播放器實踐

    微信小程序音樂播放器實踐

    1.成品展示: 實現搜索音樂,同步歌詞,控制播放等功能 2.設計: 采用微信開發(fā)文檔中的audio組件的作為代碼原型,進行擴展,鏈接audio | 微信開放文檔 (qq.com) 3、具體設計 思維導圖 鏈接:https://pan.baidu.com/s/1whZC2xOP4HvbDMjMPA7pRQ? 提取碼:ljsb 3.1 播放界面index 3.2 索引界面list

    2024年02月11日
    瀏覽(22)
  • 《微信小程序》音樂播放器項目

    《微信小程序》音樂播放器項目

    需求:在裝有node.js的機器上使用微信開發(fā)者工具開發(fā)一個音樂播放項目 寫這個項目的時候電腦前后藍屏了5次,制作不易,希望大佬們給個雙擊,順子在這感謝啦! 展示: pages–index–index.js 01.png 02.png 02stop.png 03.png 04.png 05.png 06.png banner.jpg banner2.jpg banner3.jpg cover.jpg cover1.png

    2024年02月11日
    瀏覽(29)
  • 微信小程序——【云音樂播放器】

    微信小程序——【云音樂播放器】

    目錄 第一章 開發(fā)準備 一、項目結構 二、新建微信小程序項目 第二章 標簽頁切換 一、常用組件介紹 二、編寫頁面結構和樣式 第三章 音樂推薦 一、組件介紹 二、編寫音樂推薦頁面結構和樣式 第四章 播放器 一、任務分析 二、組件介紹 三、實現播放器功能 四、編寫播放器

    2024年02月09日
    瀏覽(26)
  • 音樂播放器微信小程序

    音樂播放器微信小程序

    一:學習目標: 掌握swiper組件、scroll-view組件的使用; 掌握image組件的使用; 掌握slider組件的使用; 掌握音頻API的使用; ?二:目錄: 1. 開發(fā)前的準備 1.1?音樂小程序 項目展示 : 1.1.1: 音樂推薦 界面展示: 1.1.2: 播放器 界面展示: 1.1.3: 播放列表 界面展示: 1.2: 項目

    2024年02月05日
    瀏覽(19)
  • 基于微信小程序的音樂播放器設計與實現(源碼+lw+部署文檔+講解等)

    基于微信小程序的音樂播放器設計與實現(源碼+lw+部署文檔+講解等)

    ?? 博主介紹 :?全網粉絲10W+,CSDN特邀作者、博客專家、CSDN新星計劃導師、全棧領域優(yōu)質創(chuàng)作者,博客之星、掘金/華為云/阿里云/InfoQ等平臺優(yōu)質作者、專注于Java、小程序技術領域和畢業(yè)項目實戰(zhàn)??? ???? 精彩專欄 推薦訂閱 ???? 2023-2024年最值得選的微信小程序畢業(yè)設

    2024年02月03日
    瀏覽(26)
  • 微信小程序音樂播放器【含源碼】

    微信小程序音樂播放器【含源碼】

    微信小程序音樂播放器 取源碼私聊

    2024年02月06日
    瀏覽(27)
  • 微信小程序仿網易音樂播放器項目

    微信小程序仿網易音樂播放器項目

    主頁樣式 播放頁樣式 搜索頁樣式 排行榜頁樣式 小控件樣式 網易云音樂API接口 后端接口,使用node寫的,使用了網易云音樂API: 封裝的api文件 主頁面功能點 banner,滑動菜單欄采用微信的API( swiper 與 scroll-view )進行開發(fā) 滑動到底部重新獲取后續(xù)的歌曲,使用onReachBottom周期

    2024年02月06日
    瀏覽(30)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領取紅包

二維碼2

領紅包