微信小程序
新手,不太会改,跟的教程太老了,用的还是wx.pauseBackgroundAudio()wx.playBackgroundAudio()但是总是报错,是不是一定要采用新的API,还是哪里错了,如果是新的API要怎么编写,求解救啊啊啊啊啊啊{:10_266:} 报错原因是音乐还没有开始 qiuyouzhi 发表于 2020-6-23 15:55
报错原因是音乐还没有开始
请问应该怎么修改呢,不太会,头秃 Fisead 发表于 2020-6-23 16:14
请问应该怎么修改呢,不太会,头秃
你检查下音乐是否成功播放了 Twilight6 发表于 2020-6-23 16:36
刚刚开始学习C,话说你是用 CLion嘛?
不是昂,就是js qiuyouzhi 发表于 2020-6-23 16:24
你检查下音乐是否成功播放了
没成功,但是咱也不知道咋设置啊{:10_243:},可否借一步说话 Fisead 发表于 2020-6-23 16:39
不是昂,就是js
哈哈 是 web 板块 我看成了嘿嘿~ Twilight6 发表于 2020-6-23 16:43
哈哈 是 web 板块 我看成了嘿嘿~
昂 Fisead 发表于 2020-6-23 16:40
没成功,但是咱也不知道咋设置啊,可否借一步说话
我也不太会啊...
只是提提建议 qiuyouzhi 发表于 2020-6-23 16:48
我也不太会啊...
只是提提建议
好吧,继续蹲守,我知道那个没设置成功,但是不知道为什么,明明和图片一起设置的。。。 竟然还没人,自己顶一下自己,太难了{:10_266:} 你把代码发上来我康康 乘号 发表于 2020-6-25 12:59
你把代码发上来我康康
好,马上来 乘号 发表于 2020-6-25 12:59
你把代码发上来我康康
// pages/detail/detail.js
let datas = require('../../datas/list-data');
let appData = getApp();
Page({
/**
* 页面的初始数据
*/
data: {
detailObj: {},
isCollected: false,
index: 0,
isPlay: false
},
// 点击处理收藏文章的方法
handleCollection(){
let isCollected = !this.data.isCollected;
// 思考:
/*
* 1. 用户没有点过收藏
* 1) 存储到storage
*
*
* 2. 用户点击过收藏
* */
//1) 存储到storage
// 存储之前先获取之前的数据
let obj = wx.getStorageSync('isCollected');
obj = isCollected;
// 提示用户收藏的状态
let title = isCollected?'hh成功啦': '55取消了';
wx.showToast({
title,
icon: 'success'
});
wx.setStorage({
key: 'isCollected',
data: obj
});
this.setData({isCollected});
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
console.log(options);
// 获取传递过来的数据,更新当前的data
this.setData({detailObj:datas.list_data, index: options.id});
// 获取本地存储数据
let storageObj = wx.getStorageSync('isCollected');
console.log(storageObj);
// 判断是否存储过数据
if(!storageObj){
storageObj = {};
wx.setStorage({
key: 'isCollected',
data: storageObj
});
}else {
// 根据是否收藏当前页面文章的的标识动态生成isCollected
let isCollected = storageObj?true: false;
// 更新isCollected的值。
this.setData({isCollected});
}
// 判断当前页面音乐是否播放
if(appData.data.isMusicPlay && appData.data.playPageIndex === this.data.index){
this.setData({
isPlay: true
})
}
// 监听背景音乐的播放
wx.onBackgroundAudioPlay(() => {
// console.log('音乐播放');
this.setData({
isPlay: true
})
appData.data.isMusicPlay = true;
appData.data.playPageIndex = this.data.index;
})
// 监听音乐暂停。
wx.onBackgroundAudioPause(() => {
// console.log('音乐暂停');
this.setData({
isPlay: false
})
})
},
// 点击分享按钮
handleShare(){
wx.showActionSheet({
itemList: ['分享到朋友圈', '分享到qq空间', '分享到微信好友'],
itemColor: '#666'
})
},
// 控制音乐播放
musicControl(){
let isPlay = !this.data.isPlay;
let {dataUrl, title, coverImgUrl} = this.data.detailObj.music;
if(isPlay){ // 音乐播放
wx.playBackgroundAudio({
dataUrl,title,coverImgUrl
});
}else { // 音乐暂停
wx.pauseBackgroundAudio()
}
// 更新isPlay的状态
this.setData({isPlay});
}
}) 乘号 发表于 2020-6-25 12:59
你把代码发上来我康康
大佬大佬看过来{:10_243:} Fisead 发表于 2020-6-30 16:38
大佬大佬看过来
知道了
我不会 检测音乐是否播放了用后端Java或者C不香吗? 可我也不会{:10_250:} 存在下面的一些逻辑问题。
具体如下:
1. 在 `onLoad` 生命周期函数中没有对音乐的播放状态进行初始化操作。如果当前没有任何页面在播放音乐,那么需要手动设置 `appData.data.isMusicPlay` 为 `false`,并且设置 `appData.data.playPageIndex` 为 `-1`。
2. 在 `onLoad` 生命周期函数中获取 `isCollected` 的值并不完全准确。因为 `wx.getStorageSync('isCollected')` 可能获取不到数据,此时会返回一个空对象 `{}`,但是也有可能返回 `undefined`,因此需要使用 `!storageObj` 来判断 `isCollected` 的值是否为 `false`。
3. 在 `handleCollection` 方法中提示收藏状态时,会出现提示文字显示不完整的情况。可以将提示文字修改为更加简短的词语。
4. 在 `musicControl` 方法中控制音乐的播放与暂停状态时,需要判断当前页面是否存在音乐可以播放。如果 `this.data.detailObj.music` 为 `undefined`,则不能进行播放和暂停操作。
页:
[1]