鱼C论坛

 找回密码
 立即注册
查看: 3501|回复: 18

[已解决]微信小程序

[复制链接]
发表于 2020-6-23 15:53:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
新手,不太会改,跟的教程太老了,用的还是wx.pauseBackgroundAudio()  wx.playBackgroundAudio()
但是总是报错,是不是一定要采用新的API,还是哪里错了,如果是新的API要怎么编写,求解救啊啊啊啊啊啊
最佳答案
2023-3-31 14:25:35
存在下面的一些逻辑问题。

具体如下:

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`,则不能进行播放和暂停操作。
代码图.png
报错图.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-23 15:55:06 | 显示全部楼层

回帖奖励 +5 鱼币

报错原因是音乐还没有开始
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-23 16:14:19 | 显示全部楼层
qiuyouzhi 发表于 2020-6-23 15:55
报错原因是音乐还没有开始

请问应该怎么修改呢,不太会,头秃
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-23 16:24:25 | 显示全部楼层
Fisead 发表于 2020-6-23 16:14
请问应该怎么修改呢,不太会,头秃

你检查下音乐是否成功播放了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-23 16:39:58 | 显示全部楼层
Twilight6 发表于 2020-6-23 16:36
刚刚开始学习C,话说你是用 CLion嘛?

不是昂,就是js
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-23 16:40:45 | 显示全部楼层
qiuyouzhi 发表于 2020-6-23 16:24
你检查下音乐是否成功播放了

没成功,但是咱也不知道咋设置啊,可否借一步说话
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-23 16:43:22 | 显示全部楼层

哈哈 是 web 板块 我看成了嘿嘿~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-23 16:44:22 | 显示全部楼层
Twilight6 发表于 2020-6-23 16:43
哈哈 是 web 板块 我看成了嘿嘿~

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-23 16:48:27 | 显示全部楼层
Fisead 发表于 2020-6-23 16:40
没成功,但是咱也不知道咋设置啊,可否借一步说话

我也不太会啊...
只是提提建议
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-23 16:59:38 | 显示全部楼层
qiuyouzhi 发表于 2020-6-23 16:48
我也不太会啊...
只是提提建议

好吧,继续蹲守,我知道那个没设置成功,但是不知道为什么,明明和图片一起设置的。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-25 11:42:40 | 显示全部楼层
竟然还没人,自己顶一下自己,太难了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-25 12:59:27 | 显示全部楼层
你把代码发上来我康康
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-27 16:35:10 | 显示全部楼层
乘号 发表于 2020-6-25 12:59
你把代码发上来我康康

好,马上来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-27 16:39:53 | 显示全部楼层
乘号 发表于 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[this.data.index] = 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[options.id], 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[options.id]?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});
  }

})
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-30 16:38:07 | 显示全部楼层
乘号 发表于 2020-6-25 12:59
你把代码发上来我康康

大佬大佬看过来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-5 21:40:49 | 显示全部楼层
Fisead 发表于 2020-6-30 16:38
大佬大佬看过来

知道了
我不会
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-7 13:13:01 | 显示全部楼层
检测音乐是否播放了用后端Java或者C不香吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-14 11:33:59 | 显示全部楼层
可我也不会
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-31 14:25:35 | 显示全部楼层    本楼为最佳答案   
存在下面的一些逻辑问题。

具体如下:

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`,则不能进行播放和暂停操作。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 09:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表