首页 微信小程序 小程序开发 微信小程序开发案例之音乐播放器

微信小程序开发案例之音乐播放器

Sep 12, 2017 am 09:15 AM
小程序 播放器 程序开发

推荐页
完成标题栏后我们开始编写推荐页,即mainView=1时所要显示的页面。
根据图10-2所示,推荐页由上方的轮播组件(banner)以及下方的电台列表两部分构成。
为了完成这个页面,我们先来看看网络请求返回的数据格式。
这里使用开源数据:
http://c.y.qq.com/musichall/fcgi-bin/fcg_yqqhomepagerecommend.fcg
参照API接口章节里的内容,我们在services文件夹下创建music.js文件,在里面开始编写网络请求代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

// 获取首页的音乐数据

function getRecommendMusic(callback){

    //请求所需数据

    var data = {

            g_tk: 5381,

            uin: 0,

            format: 'json',

            inCharset: 'utf-8',

            outCharset: 'utf-8',

            notice: 0,

            platform: 'h5',

            needNewCode: 1,

            _: Date.now()

        };

        wx.request({

            //地址

            url: 'http://c.y.qq.com/musichall/fcgi-bin/fcg_yqqhomepagerecommend.fcg',

            //数据

            data: data,

            //表示返回类型为JSON

            header: {

                'Content-Type': 'application/json'

            },

            success: function (res) {

                if (res.statusCode == 200) {

                    callback(res.data)

                } else {

                }

            }

        });

}

module.exports = {

  getRecommendMusic:getRecommendMusic

}

复制代码

通过这个请求,返回json格式的数据样式为:

{

    "code": 0,

    "data": {

        "slider": [

            {

                "linkUrl": "http://share.y.qq.com/l?g=2766&id=1842365&g_f=shoujijiaodian",

                "picUrl": "http://y.gtimg.cn/music/photo_new/T003R720x288M000002QUG1D0iCyQM.jpg",

                "id": 8642

            },

            {

                "linkUrl": "http://y.qq.com/live/zhibo/0214liwen.html",

                "picUrl": "http://y.gtimg.cn/music/photo_new/T003R720x288M000003KFpsf1mPzlY.jpg",

                "id": 8645

            },

            {

                "linkUrl": "http://v.qq.com/live/p/topic/22876/preview.html",

                "picUrl": "http://y.gtimg.cn/music/photo_new/T003R720x288M000000ZZAWw1KsyoJ.jpg",

                "id": 8653

            },

            {

                "linkUrl": "http://y.qq.com/m/act/singer/index.html?ADTAG=shoujijiao",

                "picUrl": "http://y.gtimg.cn/music/photo_new/T003R720x288M000001MG8W3200tuD.jpg",

                "id": 8609

            },

            {

                "linkUrl": "http://y.qq.com/w/album.html?albummid=0035hOHV0uUWA9",

                "picUrl": "http://y.gtimg.cn/music/photo_new/T003R720x288M000000cfVE83KCkmz.jpg",

                "id": 8607

            }

        ],

        "radioList": [

            {

                "picUrl": "http://y.gtimg.cn/music/photo/radio/track_radio_199_13_1.jpg",

                "Ftitle": "热歌",

                "radioid": 199

            },

            {

                "picUrl": "http://y.gtimg.cn/music/photo/radio/track_radio_307_13_1.jpg",

                "Ftitle": "一人一首招牌歌",

                "radioid": 307

            }

        ],

        "songList": []

    }

}

登录后复制


这里code为我们请求是否成功的标示,当它等于0时,表示请求成功。data里就是我们需要的数据,里面包含3个部分,我们需要使用的为前两个,即slider部分——为我们的轮播组件提供数据,以及radioList部分——为电台列表提供数据。 这两部分会分别以数组格式保存,通过名称来获取相应数据。
有了数据之后,我们开始编写显示数据的组件:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

<view hidden="{{currentView != 1}}">

  <swiper indicator-dots="{{indicatorDots}}" autoplay="{{autoplay}}" interval="{{interval}}" duration="{{duration}}">

    <block wx:for="{{slider}}" wx:key="unique">

      <swiper-item data-id="{{item.id}}">

        <image src="{{item.picUrl}}" style="height:100%" class="slide-image" />

      </swiper-item>

    </block>

  </swiper>

  <view class="channel">

    <text class="channel-title">电台</text>

    <view class="radio-list">

      <block wx:for="{{radioList}}" wx:key="unique">

        <view class="radio-item" data-id="{{item.radioid}}" data-ftitle="{{item.Ftitle}}" bindtap="radioTap">

          <image class="radio-img" mode="aspectFit" style="height:167.5px;" src="{{item.picUrl}}" />

          <text class="radio-text">{{item.Ftitle}}</text>

        </view>

      </block>

    </view>

  </view>

</view>

复制代码

最外层使用view组件包裹,当currentView!=1时隐藏。

轮播组件使用swiper组件来完成,设置是否显示指示点,是否自动播放,切换间隔以及滑动时间4个属性。每个swiper-item为图片,使用item.picUrl从slider里获取数据。

电台部分使用列表格式,数据保存在radioList内。每个item包涵两个部分:图片和标题,以item.picUrl和item.Ftitle保存,此外还要保存每个item的ID(item.radioid)用于页面跳转。点击的响应事件定义为radioTap。

至此我们需要的数据有:indicatorDots,autoplay,interval,duration,slider,radioList。我们把这些加入到index.js中的data里吧。

//引用网络请求文件

var MusicService = require(&#39;../../services/music&#39;);

//获取应用实例

var app = getApp()

Page({

    data: {

        indicatorDots: true,

        autoplay: true,

        interval: 5000,

        duration: 1000,

        radioList: [],

        slider: [],

        mainView: 1,

    },

    onLoad: function () {

        var that = this;

        MusicService.getRecommendMusic(that.initPageData);

    },

})

登录后复制

data写好后,我们在onLoad里调用我们写好的网络请求函数,传入的参数(that.initPageData)即当请求成功后需要执行的函数,在这个函数里我们为数组radioList和slider赋值。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

initPageData: function (data) {

        var self = this;

        //请求成功再赋值,需要判断code是否为0

        if (data.code == 0) {

            self.setData({

                slider: data.data.slider,

                radioList: data.data.radioList,

            })

        }

    },

复制代码

到此为止我们的页面应该可以显示数据了,最后一步我们要给写好的view添加点击事件radioTap,让用户点击后跳转到play(音乐播放)页面。

radioTap: function (e) {

        var dataSet = e.currentTarget.dataset;

        ...

    },

登录后复制

在跳转的时候,我们需要通过已经获得的radioid向网络请求数据,返回歌曲列表,并且在播放页面加载这个列表,这一部分就留到音乐播放页再完成吧。

以上是微信小程序开发案例之音乐播放器的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1665
14
CakePHP 教程
1423
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24
VLC Chromecast无法在Windows PC上运行 VLC Chromecast无法在Windows PC上运行 Mar 26, 2024 am 10:41 AM

VLCChromecast功能在您的WindowsPC上不起作用吗?此问题可能是由Chromecast设备与VLC的铸造功能之间的兼容性问题引起的。在这篇文章中,我们将告诉你在这种情况下你可以做什么,以及如果VLC渲染器找不到你的Chromecast该怎么办。如何在Windows上使用ChromecastVLC?要使用VLC将视频从Windows投射到Chromecast,请遵循以下步骤:打开媒体播放器应用程序,转到播放菜单。导航到Renderer选项,您将能够看到检测到的Chromecast设

win10播放器进度条不动 win10播放器进度条不动 Feb 12, 2024 am 08:12 AM

Windows10v1809十月更新版正朝着史上最糟糕Windows升级义无反顾地冲过去,不但第一次正式发布后紧急撤回,还在重新打造了一个月之久后仍然Bug层出不穷,让人对微软的品控越来越担忧。现在,它的Bug清单上又多了一项,而且这次中招的是微软自家的媒体播放器WindowsMediaPlayer。近期有网友反馈,在安装最新补丁后,Windows10v1809的WindowsMediaPlayer出现了无法拖动播放进度条的问题。目前还没有找到解决办法。微软已确认了一个Bug,涉及两个补丁KB4

使用Python开发微信小程序 使用Python开发微信小程序 Jun 17, 2023 pm 06:34 PM

随着移动互联网技术和智能手机的普及,微信成为了人们生活中不可或缺的一个应用。而微信小程序则让人们可以在不需要下载安装应用的情况下,直接使用小程序来解决一些简单的需求。本文将介绍如何使用Python来开发微信小程序。一、准备工作在使用Python开发微信小程序之前,需要安装相关的Python库。这里推荐使用wxpy和itchat这两个库。wxpy是一个微信机器

实现微信小程序中的卡片翻转特效 实现微信小程序中的卡片翻转特效 Nov 21, 2023 am 10:55 AM

实现微信小程序中的卡片翻转特效在微信小程序中,实现卡片翻转特效是一种常见的动画效果,可以提升用户体验和界面交互的吸引力。下面将具体介绍如何在微信小程序中实现卡片翻转的特效,并提供相关代码示例。首先,需要在小程序的页面布局文件中定义两个卡片元素,一个用于显示正面内容,一个用于显示背面内容,具体示例代码如下:&lt;!--index.wxml--&gt;&l

支付宝上线'汉字拾光-生僻字”小程序,用于征集、补充生僻字库 支付宝上线'汉字拾光-生僻字”小程序,用于征集、补充生僻字库 Oct 31, 2023 pm 09:25 PM

本站10月31日消息,今年5月27日,蚂蚁集团宣布启动“汉字拾光计划”,最近又迎来新进展:支付宝上线“汉字拾光-生僻字”小程序,用于向社会征集生僻字,补充生僻字库,同时提供不同的生僻字输入体验,以帮助完善支付宝内的生僻字输入方法。目前,用户搜索“汉字拾光”、“生僻字”等关键词就可以进入“生僻字”小程序。在小程序里,用户可以提交尚未被系统识别录入的生僻字图片,支付宝工程师在确认后,将会对字库进行补录入。本站注意到,用户还可以在小程序体验最新的拆字输入法,这一输入法针对读音不明确的生僻字设计。用户拆

小程序能用react吗 小程序能用react吗 Dec 29, 2022 am 11:06 AM

小程序能用react,其使用方法:1、基于“react-reconciler”实现一个渲染器,生成一个DSL;2、创建一个小程序组件,去解析和渲染DSL;3、安装npm,并执行开发者工具中的构建npm;4、在自己的页面中引入包,再利用api即可完成开发。

Win10自带播放器HEVC视频扩展需付费如何解决? Win10自带播放器HEVC视频扩展需付费如何解决? Feb 09, 2024 pm 02:54 PM

随着电脑的使用率越来越高,有时候可能会遇到Win10系统播放HEVC视频要收费的情况,遇到这种情况要如何处理呢?下面就和小编一起来看看详细内容吧。目前使用HEVC编码的视频越来越多,在4K视频中尤为常见,1080p视频为了提升画质、减少体积也大量改用HEVC编码,Win10视频播放器默认不支持HEVC,还是颇为影响使用的。缺乏HEVC编码支持,除了影响视频播放,甚至还会影响图片开启。我们知道很多新手机例如iPhone都是用了HEIF格式来保存图片,实际上HEIF图片可以看作是HEVC视频编码的图

uniapp如何实现小程序和H5的快速转换 uniapp如何实现小程序和H5的快速转换 Oct 20, 2023 pm 02:12 PM

uniapp如何实现小程序和H5的快速转换,需要具体代码示例近年来,随着移动互联网的发展和智能手机的普及,小程序和H5成为了不可或缺的应用形式。而uniapp作为一个跨平台的开发框架,可以在一套代码的基础上,快速实现小程序和H5的转换,大大提高了开发效率。本文将介绍uniapp如何实现小程序和H5的快速转换,并给出具体的代码示例。一、uniapp简介unia

See all articles