打造自己的音乐小程序(中)——主要功能实现

简介: 打造自己的音乐小程序(中)——主要功能实现

效果展示


音乐小程序,点击播放效果视频


  • content 有 主页面信息,音乐播放器,播放列表三部分构成


  • info:主页信息内容部分


  • play:播放器页面


  • playlist:播放列表


主要功能包括主页信息,播放器页面,播放列表三部分


下面依次是各部分效果图



主信息页面:info.wxml


这部分就是展示,没有继续去写功能


<!-- 内容滚动区域 -->
<scroll-view class="content-info" scroll-y>
        <!-- 轮播图 -->
        <swiper class="content-info-slide" indicator-color="rgba(255,255,255,.5)" indicator-active-color="#fff" indicator-dots circular autoplay>
          <swiper-item>
            <image src="/images/1.jpg" />
          </swiper-item>
          <swiper-item>
            <image src="/images/2.jpg" />
          </swiper-item>
          <swiper-item>
            <image src="/images/3.jpg" />
          </swiper-item>
        </swiper>
        <!-- 功能按钮 -->
        <view class="content-info-portal">
          <view>
            <image src="/images/04.png" />
            <text>私人FM</text>
          </view>
          <view>
            <image src="/images/05.png" />
            <text>每日歌曲推荐</text>
          </view>
          <view>
            <image src="/images/06.png" />
            <text>云音乐新歌榜</text>
          </view>
        </view>
        <!-- 热门音乐 -->
        <view class="content-info-list">
          <view class="list-title">推荐歌曲</view>
          <view class="list-inner">
            <view class="list-item">
              <image src="/images/avatar_ (1).jpg" />
              <view>紫罗兰</view>
            </view>
            <view class="list-item">
              <image src="/images/avatar_ (2).jpg" />
              <view>五月之歌</view>
            </view>
            <view class="list-item">
              <image src="/images/avatar_ (3).jpg" />
              <view>菩提树</view>
            </view>
            <view class="list-item">
              <image src="/images/avatar_ (4).jpg" />
              <view>欢乐颂</view>
            </view>
            <view class="list-item">
              <image src="/images/avatar_ (5).jpg" />
              <view>安魂曲</view>
            </view>
            <view class="list-item">
              <image src="/images/avatar_ (6).jpg" />
              <view>摇篮曲</view>
            </view>
          </view>
        </view>
      </scroll-view>


播放页面:play.wxml



其中有播放功能,进度条功能和头像旋转显示功能等,


play.wxml


<!-- 播放器 -->
<view class="content-play">
  <!-- 显示音乐信息 -->
  <view class="content-play-info">
    <text>{{play.title}}</text>
    <view>—— {{play.singer}} ——</view>
  </view>
  <!-- 显示专辑封面 -->
  <view class="content-play-cover">
    <image src="{{play.coverImgUrl}}" style="animation-play-state:{{state}}" />
  </view>
  <!-- 显示播放进度和时间 -->
  <view class="content-play-progress">
    <text>{{play.currentTime}}</text>
    <view>
      <slider bindchange="sliderChange" activeColor="#d33a31" block-size="12" backgroundColor="#dadada" value="{{play.percent}}" />
    </view>
    <text>{{play.duration}}</text>
  </view>
</view>


播放功能事件


用createInnerAudioContext创建媒体 进行播放就好啦


// 实现播放器播放功能
audioCtx: null,
onReady: function() {
  this.audioCtx = wx.createInnerAudioContext()
  // 默认选择第1曲
  this.setMusic(0)
  var that = this
  // 播放进度检测
  this.audioCtx.onError(function() {
    console.log('播放失败:' + that.audioCtx.src)
  })
  // 播放完成自动换下一曲
  this.audioCtx.onEnded(function() {
    that.next()
  })
},


进度条更新进度


// 自动更新播放进度
 this.audioCtx.onPlay(function() {})
 this.audioCtx.onTimeUpdate(function() {
   that.setData({
     'play.duration': formatTime(that.audioCtx.duration),
     'play.currentTime': formatTime(that.audioCtx.currentTime),
     'play.percent': that.audioCtx.currentTime / that.audioCtx.duration * 100
   })
 })


格式化显示时间,与播放进度匹配


// 格式化时间
function formatTime(time) {
  var minute = Math.floor(time / 60) % 60;
  var second = Math.floor(time) % 60
  return (minute < 10 ? '0' + minute : minute) + ':' + (second < 10 ? '0' + second : second)
}


音乐播放功能,设置播放器各个属性


// 音乐播放
setMusic: function(index) {
  var music = this.data.playlist[index]
  this.audioCtx.src = music.src
  this.setData({
    playIndex: index,
    'play.title': music.title,
    'play.singer': music.singer,
    'play.coverImgUrl': music.coverImgUrl,
    'play.currentTime': '00:00',
    'play.duration': '00:00',
    'play.percent': 0
  })
},


当点击播放或者暂停时


会改后台state的值进行播放与暂停之间的切换


state: 'running'


播放列表:playlist.wxml


<scroll-view class="content-playlist" scroll-y>
  <view class="playlist-item" wx:for="{{playlist}}" wx:key="id" bindtap="change" data-index="{{index}}">
    <image class="playlist-cover" src="{{item.coverImgUrl}}" />
    <view class="playlist-info">
      <view class="playlist-info-title">{{item.title}}</view>
      <view class="playlist-info-singer">{{item.singer}}</view>
    </view>
    <view class="playlist-controls">
      <text wx:if="{{index==playIndex}}">正在播放</text>
    </view>
  </view>
</scroll-view>


点击歌曲就会调用change事件 进行修改歌曲id 就能切换歌曲啦

相关文章
|
24天前
|
小程序 数据挖掘 UED
开发1个上门家政小程序APP系统,都有哪些功能?
在快节奏的现代生活中,家政服务已成为许多家庭的必需品。针对传统家政服务存在的问题,如服务质量不稳定、价格不透明等,我们历时两年开发了一套全新的上门家政系统。该系统通过完善信用体系、提供奖励机制、优化复购体验、多渠道推广和多样化盈利模式,解决了私单、复购、推广和盈利四大痛点,全面提升了服务质量和用户体验,旨在成为家政行业的领导者。
|
1月前
|
存储 自然语言处理 小程序
微信小程序多语言切换神器:简繁体切换功能完全指南
随着全球化的发展,支持多种语言的应用程序愈发重要。本文介绍了如何在微信小程序中实现简体与繁体字体之间的切换功能,以满足不同地区用户的需求。通过创建utils文件夹并编写相应的转换函数,开发者可以方便地实现语言切换,从而提升用户体验。文章中还附带了示例代码和效果图,帮助读者更好地理解和应用这一功能。
90 0
微信小程序多语言切换神器:简繁体切换功能完全指南
|
1月前
|
小程序 Linux Python
查找首字母与Python相关的的英文词汇小程序的续篇---进一步功能完善
查找首字母与Python相关的的英文词汇小程序的续篇---进一步功能完善
|
3月前
|
Web App开发 缓存 小程序
【Azure API 管理】从微信小程序访问APIM出现200空响应的问题中发现CORS的属性[terminate-unmatched-request]功能
【Azure API 管理】从微信小程序访问APIM出现200空响应的问题中发现CORS的属性[terminate-unmatched-request]功能
|
3月前
|
小程序 前端开发 开发者
|
3月前
|
小程序 前端开发 API
Ant Design Mini 问题之在微信小程序中,由于不支持slot特性,Ant Design Mini的什么组件功能受到了限制,如何解决
Ant Design Mini 问题之在微信小程序中,由于不支持slot特性,Ant Design Mini的什么组件功能受到了限制,如何解决
106 1
|
4月前
|
小程序 安全 数据挖掘
陪玩语聊APP小程序定制开发模块功能
随着电竞行业的规范化,游戏陪玩软件兴起,提供专业陪玩服务。核心功能包括:多样化注册登录、用户资料展示、智能匹配筛选陪玩、语音互动(多人/私聊)、订单交易管理、陪玩入驻审核、数据分析、客服系统及社交功能。旨在融合游戏、语音聊天与社交,构建综合娱乐平台。
|
4月前
|
小程序 BI 定位技术
广州跑腿小程序功能开发让生活更方便
跑腿小程序整合生活服务,提供快捷的跑腿任务解决方案。用户通过手机号或微信注册登录,发布如取快递、买饭等需求;跑腿员接单并利用导航高效完成。支持订单管理、多种支付方式及评价反馈系统,确保服务质量。小程序还发送订单状态通知,进行数据统计分析以促进平台发展。
|
4月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的音乐播放器小程序附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的音乐播放器小程序附带文章源码部署视频讲解等
28 1
|
5月前
|
小程序 前端开发 JavaScript
微信小程序|音乐播放器小程序设计与实现
微信小程序|音乐播放器小程序设计与实现
下一篇
无影云桌面