1. 程式人生 > >微信小程式音樂播放器開發(進度條可拖拽)

微信小程式音樂播放器開發(進度條可拖拽)

前言 

這篇文章上一版本是用audio元件開發的播放器,隨後反應音訊載入速度慢的問題

又用小程式內建的背景音樂播放的方法寫了一遍,邏輯是一樣的邏輯,希望對大家有所幫助!


<view class='audiosBox'>
    <view class="audioOpen" bindtap="listenerButtonPlay" wx:if="{{!isOpen}}">
      <image class='image2' src="../../images/play.png" />
    </view>
    <view class="audioOpen" bindtap="listenerButtonPause" wx:if="{{isOpen}}">
      <image src="../../images/pauses.png" />
    </view>
    <view class='slid'>
      <slider bindchange="sliderChange"  block-size="12px" step="2" value="{{offset}}" max="{{max}}" selected-color="#4c9dee" />
      <view>
        <text class='times'>{{starttime}}</text> <!-- 進度時長 -->
       
        <text class='times'>{{duration}}</text>   <!-- 總時長 -->
      </view>
    </view>
</view>

js部分注意了:bug ios 播放時必須加title 不然會報錯導致音樂不播放

//index.js
//獲取應用例項
const bgMusic = wx.getBackgroundAudioManager()
const app = getApp()

Page({
  data: {
    isOpen: false,//播放開關
    starttime: '00:00', //正在播放時長
    duration: '06:41',   //總時長
    src:"http://ws.stream.qqmusic.qq.com/M500001VfvsJ21xFqb.mp3?guid=ffffffff82def4af4b12b3cd9337d5e7&uin=346897220&vkey=6292F51E1E384E061FF02C31F716658E5C81F5594D561F2E88B854E81CAAB7806D5E4F103E55D33C16F3FAC506D1AB172DE8600B37E43FAD&fromtag=46"
  },
  // 播放
  listenerButtonPlay: function () {
    var that = this
    //bug ios 播放時必須加title 不然會報錯導致音樂不播放
    bgMusic.title = '此時此刻'  
    bgMusic.epname = '此時此刻'
    bgMusic.src = that.data.src;
    bgMusic.onTimeUpdate(() => { 
      //bgMusic.duration總時長  bgMusic.currentTime當前進度
      console.log(bgMusic.currentTime)
      var duration = bgMusic.duration; 
      var offset = bgMusic.currentTime;  
      var currentTime = parseInt(bgMusic.currentTime);
      var min = "0" + parseInt(currentTime / 60);
      var max = parseInt(bgMusic.duration);
      var sec = currentTime % 60;
      if (sec < 10) {
        sec = "0" + sec;
      };
      var starttime = min + ':' + sec;   /*  00:00  */
      that.setData({
        offset: currentTime,
        starttime: starttime,
        max: max,
        changePlay: true
      })
    })
    //播放結束
    bgMusic.onEnded(() => {
      that.setData({
        starttime: '00:00',
        isOpen: false,
        offset: 0
      })
      console.log("音樂播放結束");
    })
    bgMusic.play();
    that.setData({
      isOpen: true,
    })
  },
  //暫停播放
  listenerButtonPause(){
     var that = this
    bgMusic.pause()
    that.setData({
      isOpen: false,
    })
  },
  listenerButtonStop(){
    var that = this
    bgMusic.stop()
  },
  // 進度條拖拽
  sliderChange(e) {
    var that = this
    var offset = parseInt(e.detail.value);
    bgMusic.play();
    bgMusic.seek(offset);
    that.setData({
      isOpen: true,
    })
  },
  // 頁面解除安裝時停止播放
  onUnload() {
    var that = this
    that.listenerButtonStop()//停止播放
    console.log("離開")
  },
})

css部分 

/**index.wxss**/
.audiosBox{
  width: 92%;
  margin: auto;
  height: 130rpx;
  display: flex;
  justify-content: space-between;
  align-items: center;
  background: #f6f7f7;
  border-radius: 10rpx;
}
/*按鈕大小  */
.audioOpen{
  width: 70rpx;
  height: 70rpx;
  border: 2rpx solid #4c9dee;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-left: 20rpx;
}

image{
  width: 30rpx;
  height: 40rpx;
}
.image2{
  margin-left: 10%;
}
/*進度條長度  */
.slid{
  flex: 1;
  position: relative;
}
.slid view{
  display: flex;
  justify-content: space-between;
}
.slid view>text:nth-child(1){
  color: #4c9dee;
  margin-left:6rpx; 
}
.slid view>text:nth-child(2){
  margin-right:6rpx; 
}
slider{
  width: 520rpx;
  margin: 0;
  margin-left: 35rpx;
}
/*橫向佈局  */
.times{
  width: 100rpx;
  text-align: center;
  display: inline-block;
  font-size: 24rpx;
  color:#999999;
  margin-top: 5rpx;
}
.title view{
  text-indent: 2em;

}

看到這裡,點個贊吧!

相關推薦

程式音樂播放開發進度

前言  這篇文章上一版本是用audio元件開發的播放器,隨後反應音訊載入速度慢的問題 又用小程式內建的背景音樂播放的方法寫了一遍,邏輯是一樣的邏輯,希望對大家有所幫助! <view class='audiosBox'> <view c

程式-textarea獲取輸入值在modal中獲取值

我的頁面是這樣的。我要點選微信自帶的modal中按鈕獲取textare的輸入值(下面的頁面已經改好了) 文件上的bindblur事件根本就滿足不了使用,因為我在點選按鈕後先呼叫了confirm方法,然後才會呼叫bindblur事件的方法獲取textare值。所以就沒辦法進行了。 網上有的部落格中

程式之二三級選單navigateTo傳遞資料的應用

今早來之後稍微寫了下今天的工作目標然後就是自己犯蠢到現在的過程,所幸最後還是走回了正軌,記錄一下我在過程中的內心彈幕,並把最後結果記錄一下 微信小程式-估價系統-車輛品牌款式等-三級選單 車標 省份-

程式自動化測試全流程安卓真機+Appium

一、連線手機 1.手機設定成開發者模式(我用的oppo,所以是設定-關於手機-三擊“版本號”,開發者模式開啟) 2.開啟USB除錯(設定-其它設定-開發者選項-USB除錯開啟,最好不鎖螢幕和不使用鎖屏) 3.此時資料線是與電腦連線 的,手機端會出現“允許除

程式----連等報錯ReferenceError: xxxxx is not defined

出現的錯誤 ReferenceError: xxxxx is not defined 出現的場景 在初始化countX ,countY ,countZ 這三個變數都為0時,在JS

程式之:雲開發初體驗--致我的第一個程式

背景:一直關注微信小程式的發展,看著小程式一步步完善,一步步壯大,心裡癢癢,也想做一個自己的微信小程式,但是苦於只會前端,不會服務端,所以想法一直被卡著。現在小程式有了雲開發,很輕鬆實現後端功能,寫後端跟寫前端沒啥區別,真的是前端小夥伴們的福音啊。 經過幾個晚上的熬夜奮戰,我的第一個微信小程式正式

程式在編輯上樣式正常,但在手機上不顯示樣式

之前做了個小工具,最近有時間,就加了頁面,在編輯器上的wxss樣式是正常的,但在手機上預覽就無法顯示 我目前只發現了一個顏色問題,但產生問題的真正原因沒去仔細研究,所以以後遇到其他的研究下再寫上來 解決方法: 原因:其他都生效,只是

程式 Video 播放視訊,寬高設定

1. wxml檔案 <view class="section"> <video class= "videoCss" src='{{url}}' objectFit='cover' show-center-play-btn = true contro

程式如何使用雲開發

微信小程式中的雲開發想必大家還不是很熟悉,因為雲開發也就是9月份上線的,相比之前大家對於資料庫的儲存都是用的是自己的伺服器,接下來這篇文章主要為大家介紹下怎麼使用雲開發,網上看過很多文章感覺介紹的不是很詳細,下面通過我個人親身經歷整理下自己的思路吧。 首先介紹下雲開發主要的

程式從零開始開發步驟引入外部js 檔案

            上一章講到小程式頁面的四種常見的跳轉的方法,這一章寫如何引入一個外部的js檔案,既utils資料夾的用處,其實步驟很簡單:1:準備好外部想要引入的外部檔案,命名為util.js,並且填充固定的檔案內容(一般是固定的庫)圖片.png2:開啟util.js ,繼續填寫重要內容將要使用的方法

程式從零開始開發步驟引入框架WeUI

            首先來看下WeUI的官方介紹:WeUI 是一套同微信原生視覺體驗一致的基礎樣式庫,由微信官方設計團隊為微信內網頁和微信小程式量身設計,令使用者的使用感知更加統一。在微信小程式的開發過程中,涉及到的前端複雜的樣式介面的問題,就需要使用個UI框架,這樣可以省去以後很多麻煩。WeUI作為一個

程式 —— 成員管理及開發管理

引入 要理解微信小程式的成員管理,首先要理解微信小程式的註冊。 微信小程式的註冊需要使用者提供一個郵箱作為登入賬號,並繫結一個微訊號作為管理員。 登入賬號會得到一個官方提供的appid作為標識碼,作為登入賬號的憑證。 微信小程式登入賬號與微訊號是不同的東西

程式WeUI.js網頁開發樣式庫

由 caoyeshu 建立,最後一次修改 2016-12-18 目錄 1 概述 2 使用方法 2.1 安裝 2.2 開發 3 元素型別 3.1 Button 3.2 Cell 3.3 D

程式從零開始開發步驟

上一章註冊完小程式,新增新建的專案,大致的準備開發已經完成,本章要分享的是要建立一個簡單的頁面了,建立小程式頁面的具體幾個步驟:1. 在pages 中新增一個目錄選中page,右擊滑鼠,從硬碟開啟,開啟硬碟檔案之後,新建一個資料夾test(或者點選+號,逐個新增目錄,新增目錄下面所需要

程式------聯動選擇

picker 從底部彈起的滾動選擇器,現支援五種選擇器,通過mode來區分,分別是普通選擇器,多列選擇器,時間選擇器,日期選擇器,省市區選擇器,預設是普通選擇器。 先來看看效果圖:       1:

程式實時音視訊開發記錄

    以前做過一個簡單的小程式,但是到現在回想怎麼開發小程式,竟然一點也想不起來,鑑於學過的東西老是忘掉毛病,現在借專案需要小程式音視訊功能,記錄一下小程式開發步驟和小程式視訊音視訊功能的使用。    由於完全不記得小程式開發步驟和程式碼結構,只有重頭開始學習,我首先閱讀了

程式:web-view開發實踐

使用該元件有個先決條件,就是得到小程式公眾平臺設定網頁的域名白名單,具體做法請自行登入檢視。 然後在小程式寫入如下測試頁:: test.js:: onLoad: function (options) { this.setData({

1.3.3程式WeUI.js網頁開發樣式庫

目錄 1 概述2 使用方法 2.1 安裝2.2 開發3 元素型別 3.1 Button3.2 Cell3.3 Dialog3.4 Progress3.5 Toast3.6 Msg Page3.7 Article3.8 ActionSheet3.9 Icon4 技術支

程式用定時實現倒計時效果

平常在微信小程式開發的時候,因專案的需求,倒計時必不可少,下面主要講解定時器在微信小程式中的使用。這裡要先宣告一點的就是,該篇主要實現倒計時功能,而且實現是時長較短的倒計時,其他的優化什麼的不作主要考慮。如果實現簡單的60s倒計時效果,我們可直接使用setInterval即可

程式例項——天氣預報開發筆記進行中...

★ 背景 【提示】:正在補充更新中… 首先,附上一張效果圖. 之前就有關注過小程式的發展,感覺可以抽一點的時間來學習一下,通過官方文件以及提供的示例 Demo,發現興趣挺高,不失為一個