2018/3/21 0:00:00
來源:不詳
作者:未知
專輯的頁面與我們剛剛完成的排行列表很相似,除了部分文字的變化外就是多了簡介這一部分。
網(wǎng)絡(luò)請求的函數(shù)為:
-
function getAlbumInfo(id,callback){
-
var data = {
-
albummid: albummid,
-
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/v8/fcg-bin/fcg_v8_album_info_cp.fcg',
-
data: data,
-
header: {
-
'Content-Type': 'application/json'
-
},
-
success: function (res) {
-
console.log(res);
-
if (res.statusCode == 200) {
-
callback(res.data);
-
} else {
-
-
}
-
}
-
});
-
}
-
-
module.exports = {
-
...
-
getAlbumInfo:getAlbumInfo
-
}
復(fù)制代碼
頁面的布局代碼為:
-
<view class="list-top">
-
<view class="top-info">
-
<view class="top-info-inner">
-
<view class="top-info-text">
-
<view class="top-info-title">{{albumInfo.name}}</view>
-
<view class="top-info-base">
-
<text>{{albumInfo.singername}}</text>
-
<text style="margin-left: 5px;">{{albumInfo.aDate}}</text>
-
<text style="margin-left:10px;">{{albumInfo.genre}}</text>
-
</view>
-
</view>
-
<view class="top-play"></view>
-
</view>
-
</view>
-
<image class="top-img" mode="aspectFit" src="{{coverImg}}"></image>
-
<view class="top-back"></view>
-
</view>
-
<view class="song-list" style="background:{{listBgColor}}">
-
<view class="song-item" wx:for="{{albumInfo.list}}" data-data="{{item.data}}" data-mid="{{item.songmid}}">
-
<text class="song-index">{{index+1}}</text>
-
<view class="song-item-title">{{item.songname}}</view>
-
<view class="song-item-text">
-
<block wx:for="{{item.singer}}">
-
<block wx:if="{{index!=0}}">|</block>
-
{{item.name}}
-
</block>
-
</view>
-
</view>
-
</view>
-
<view class="desc" style="background:{{listBgColor}}">
-
<view class="desc-title">簡介</view>
-
<text>{{albumInfo.desc}}</text>
-
</view>
復(fù)制代碼
簡介部分的格式文件:
-
.desc {
-
box-sizing: border-box;
-
font-size: 14px;
-
padding: 40px 10px;
-
color: #fff;
-
line-height: 20px;
-
}
-
-
.desc-title {
-
text-align: center;
-
width: 100%;
-
font-size: 16px;
-
margin-bottom: 20px;
-
}
復(fù)制代碼
加載數(shù)據(jù)的代碼為:
-
var MusicService = require('../../services/music');
-
var app = getApp()
-
-
Page({
-
data: {
-
albumInfo: {},
-
coverImg: '',
-
},
-
onLoad: function (options) {
-
// 頁面初始化 options為頁面跳轉(zhuǎn)所帶來的參數(shù)
-
var mid = app.globalData.zhidaAlbummid;
-
MusicService.getAlbumInfo(mid, this.setPageData)
-
},
-
setPageData: function (data) {
-
if (data.code == 0) {
-
var albummid = data.data.mid;
-
var img = 'http://y.gtimg.cn/music/photo/mid_album_500/' + albummid.slice(-2, -1) + '/' + albummid.slice(-1) + '/' + albummid + '.jpg'
-
this.setData({albumInfo: data.data, coverImg: img});
-
}
-
},
-
})
復(fù)制代碼
這里的點(diǎn)擊事件與前文相同,就不再重復(fù)了。
另外,我們在首頁里未完成的兩個點(diǎn)擊事件,現(xiàn)在也可以完成了。先看電臺的點(diǎn)擊事件,這個事件與我們剛剛完成的一樣,具體代碼為:
-
radioTap: function (e) {
-
var dataSet = e.currentTarget.dataset;
-
MusicService.getRadioMusicList(dataSet.id, function (data) {
-
wx.navigateTo({
-
url: '../play/play'
-
});
-
if (data.code == 0) {
-
var list = [];
-
var dataList = data.data;
-
for (var i = 0; i < dataList.length; i++) {
-
var song = {};
-
var item = dataList[i];
-
song.id = item.id;
-
song.mid = item.mid;
-
song.name = item.name;
-
song.title = item.title;
-
song.subTitle = item.subtitle;
-
song.singer = item.singer;
-
song.album = item.album
-
song.img = 'http://y.gtimg.cn/music/photo_new/T002R150x150M000' + item.album.mid + '.jpg?max_age=2592000'
-
list.push(song);
-
}
-
app.setGlobalData({
-
playList: list,
-
playIndex: 0
-
});
-
}
-
});
-
},
復(fù)制代碼
這里面getRadioMusicList為網(wǎng)絡(luò)請求,具體代碼為:
-
function getRadioMusicList(id,callback){
-
var data = {
-
labelid: id,
-
g_tk: 5381,
-
uin: 0,
-
format: 'json',
-
inCharset: 'utf-8',
-
outCharset: 'utf-8',
-
notice: 0,
-
&nnbsp; platform: 'h5',
-
needNewCode: 1,
-
_: Date.now(),
-
}
-
wx.request({
-
url: 'https://c.y.qq.com/v8/fcg-bin/fcg_v8_radiosonglist.fcg',
-
data: data,
-
header: {
-
'Content-Type': 'application/json'
-
},
-
success: function (res) {
-
if (res.statusCode == 200) {
-
callback(res.data);
-
} else {
-
-
}
-
-
}
-
});
-
}
-
-
module.exports = {
-
...
-
getRadioMusicList:getRadioMusicList
-
}
復(fù)制代碼
另一部分為搜索結(jié)果里歌曲的點(diǎn)擊事件
-
musuicPlay: function (e) {
-
var dataSet = e.currentTarget.dataset;
-
var playingSongs = app.globalData.playList;
-
if (typeof dataSet.index !== 'undefined') {
-
var index = dataSet.index;
-
var item = this.data.searchSongs[index];
-
var song = {};
-
var album = {};
-
album.mid = item.albummid
-
album.id = item.albumid
-
album.name = item.albumname;
-
album.desc = item.albumdesc
-
-
song.id = item.songid;
-
song.mid = item.songmid;
-
song.name = item.songname;
-
song.title = item.songorig;
-
song.subTitle = '';
-
song.singer = item.singer;
-
song.album = album;
-
song.time_public = item.time_public;
-
song.img = 'http://y.gtimg.cn/music/photo_new/T002R150x150M000' + album.mid + '.jpg?max_age=2592000'
-
this.addPlayingSongs(song);
-
}
-
},
復(fù)制代碼
前面的內(nèi)容與我們寫過的一樣,最后我們沒有直接更新全局變量而是調(diào)用了一個新方法,因?yàn)榍拔乃械狞c(diǎn)擊事件都更新了整個播放列表,而我們點(diǎn)擊某一首歌曲時,我們希望添加這首歌到已有的列表中,而不是先清空它。
-
addPlayingSongs: function (song) {
-
var playingSongs = app.globalData.playList; //獲取當(dāng)前的播放列表
-
var index = -1;
-
if (typeof playingSongs === 'undefined') { //判斷列表是否為空
-
playingSongs = [];
-
playingSongs.push(song);
-
app.setGlobalData({ //如果是空的話,直接更新全局變量
-
playList: playingSongs,
-
playIndex: 0
-
});
-
} else { //不為空的話我們先判斷當(dāng)前列表是否包含選定歌曲
-
for (var i = 0; i < playingSongs.length; i++) { //遍歷整個列表
-
var item = playingSongs[i];
-
if (item.mid == song.mid) { //如果發(fā)現(xiàn)有mid相同的(即同一首歌)
-
index = i; //獲取這首歌在列表里的序號
-
break;
-
}
-
}
-
if (index != -1) { //歌曲已存在
-
app.setGlobalData({
-
playIndex: index //用我們獲取的序號更新當(dāng)前播放序號
-
});
-
} else { //不存在的情況
-
playingSongs.push(song);
-
index = playingSongs.length - 1; //將歌曲加入播放列表,播放序號改為列表最后一項(xiàng)
-
app.setGlobalData({
-
playList: playingSongs,
-
playIndex: index
-
});
-
}
-
}
-
wx.navigateTo({
-
url: '../play/play'
-
});
-
},
復(fù)制代碼
上一節(jié):微信小程序小白項(xiàng)目開發(fā)案例之音樂播放器-頁面渲染
下一節(jié):微信小程序小白項(xiàng)目開發(fā)案例之音樂播放器—音樂播放頁
【本站聲明】
1、本站文章中所選用的圖片及文字來源于網(wǎng)絡(luò)以及用戶投稿,由于未聯(lián)系到知識產(chǎn)權(quán)人或未發(fā)現(xiàn)有關(guān)知識產(chǎn)權(quán)的登記,如有知識產(chǎn)權(quán)人并不愿意我們使用,如果有侵權(quán)請立即聯(lián)系。
2、本網(wǎng)站不對文章中所涉及的內(nèi)容真實(shí)性、準(zhǔn)確性、可靠性負(fù)責(zé),僅系客觀性描述,如您需要了解該類商品/服務(wù)詳細(xì)的資訊,請您直接與該類商品/服務(wù)的提供者聯(lián)系。
KESION 科汛軟件
KESION 科汛軟件是國內(nèi)領(lǐng)先的在線教育軟件及私域社交電商軟件服務(wù)提供商,長期專注于為企業(yè)提供在線教育軟件及社交電商SaaS平臺解決方案。
公司核心產(chǎn)品云開店SaaS社交電商服務(wù)平臺、在線教育SaaS服務(wù)平臺、教育企業(yè)數(shù)字化SaaS云平臺、企微營銷助手、私有化獨(dú)立部署品牌網(wǎng)校和在線教育咨詢等。KESION 不斷通過技術(shù)創(chuàng)新,提供產(chǎn)品和服務(wù),助力企業(yè)向數(shù)字化轉(zhuǎn)型,通過科技驅(qū)動商業(yè)革新,讓商業(yè)變得更智慧!