网友真实露脸自拍10p,成人国产精品秘?久久久按摩,国产精品久久久久久无码不卡,成人免费区一区二区三区

小程序模板網

微信小程序this報錯,后臺音樂播放注意事項

發布時間:2018-04-18 09:38 所屬欄目:小程序開發教程

一:this報錯

1、報錯this.getUserInfo(this.setData) is not a function;at pages/index/index onShow function;at api request success callback function 
TypeError: this.getUserInfo is not a function

在回調結果里調用這個頁面的函數 this.fun() 或者 this.setData 時就會報錯,這時要在函數一開時的地方使用var that = this;,然后使用that調用數據。

這里的this指向的就是請求本身了如( wx.request ),而不是這個頁面!!!

 

				
  1. onLoad:function(options){
  2. this.login();
  3. },
  4.  
  5. login:function(){
  6. var that = this;// 這個地方非常重要,重置data{}里數據時候setData方法的this應為以及函數的this, 如果在下方的sucess直接寫this就變成了wx.request()的this了
  7. wx.login({
  8. success: function (res) {
  9. if (res.code) {
  10. //發起網絡請求
  11. wx.request({
  12. url: 'https://applet.ech-med.com/appwx/getAppToken',
  13. data: {
  14. code: res.code
  15. },
  16. success: function (re) {
  17. console.log(re);that.getUserInfo();
  18.          that.setData({ });//如果在sucess直接寫this就變成了wx.request()的this了.必須為getdata函數的this,不然無法重置調用函數
  19. }
  20. })
  21. } else {
  22. console.log('獲取用戶登錄態失敗!' + res.errMsg)
  23. }
  24. }
  25. })
  26. },
  27.  
  28. getUserInfo: function () {
  29. console.log("獲取用戶信息")
  30. },
 

二:后臺音樂播放注意事項

分享者:默識,來自原文地址

  1. wx.seekBackgroundAudio(OBJECT)

    作用:控制音樂播放進度。

    注意: 該事件 會觸發 wx.onBackgroundAudioPlay(CALLBACK) 事件 ,也就是相當于在調整進度后,后臺會自動的調用wx.playBackgroundAudio(OBJECT)函數。

  2. 使用 audio組件 制作的播放器,即使點擊"顯示在微信頂部",音樂依然會停止,使用 wx.playBackgroundAudio 相關API制作的播放器才不會。

  3. wx.playBackgroundAudio(OBJECT),wx.pauseBackgroundAudio(),wx.seekBackgroundAudio(OBJECT),wx.stopBackgroundAudio()

    注意:上述四個操作都是 異步操作,都可以設置OBJECT參數,都有 success , fail , complete 回調 ,參照wx.playBackgroundAudio(OBJECT) 的 OBJECT說明,OBJECT說明

  4. 后臺播放音樂暫停后怎么從上次播放的地方繼續播放?

    • 使用 seekBackgroundAudio。

      官網并沒有相關解釋,初步思路是使用 playBackgroundAudio 播放音樂后,再調用 seekBackgroundAudio 將進度調整到上次停止的地方,但是由上面的第一條所描述,這樣做的結果會導致onBackgroundAudioPlay 會被觸發兩次,所以我們可以直接調用seekBackgroundAudio調整播放進度即可(前提是之前有播放過歌曲,就是確保歌曲地址已經被設置,不然無效),隨后音樂會自動播放.

    • 使用 playBackgroundAudio

      經測試調用playBackgroundAudio,并且傳入的歌曲地址參數和上次相同時,歌曲會從上次暫停的時間位置繼續播放

  5. wx.stopBackgroundAudio

    注意:經測試,再調用 wx.stopBackgroundAudio 函數之后,緊接著調用 wx.playBackgroundAudio ,在pc端模擬測試時正常,后臺會停止播放音樂,然后再播放新的音樂,但是,在手機上卻會打斷緊接著調用的 wx.playBackgroundAudio 的播放(坑啊T-T),測試真機為phone5。

  6. 回調函數的觸發時機。

    • wx.onBackgroundAudioPlay(CALLBACK) 監聽音樂播放。

    • wx.onBackgroundAudioPause(CALLBACK) 監聽音樂暫停。

    • wx.onBackgroundAudioStop(CALLBACK) 監聽音樂停止。

    上述監聽函數會在調用對應的wx.playBackgroundAudio(OBJECT),wx.pauseBackgroundAudio(),wx.stopBackgroundAudio()等函數時,會被立即觸發,對應的操作可能并沒有完成,比如調用 playBackgroundAudio播放音樂,只是給后臺發送信息,要播放音樂,但是此時音樂并沒有開始播放,可能還在加載等等,但是onBackgroundAudioPlay的回調函數會立即調用。

    而wx.playBackgroundAudio(OBJECT),wx.pauseBackgroundAudio(OBJECT),wx.seekBackgroundAudio(OBJECT),wx.stopBackgroundAudio(OBJECT)中OBJECT里面的回調函數會在如下對應條件觸發:

    • 在歌曲加載完成之后,可以播放時觸發

    • 在歌曲暫停之后,沒有聲音之后觸發

    • 歌曲進度設置完成并且開始播放之后觸發

    • 歌曲停止之后觸發

    wx.onBackgroundAudioPlay(CALLBACK) , wx.onBackgroundAudioPause(CALLBACK) , wx.onBackgroundAudioStop(CALLBACK) 函數可以監聽后臺操作歌曲時,觸發的事件,比如當小程序退出后,音樂暫停,也包括我們使用 wx.pauseBackgroundAudio 等函數時觸發的事件。

    在wx.onBackgroundAudioPause(OBJECT)里面的 暫停回調函數函數不會被觸發,wx.pauseBackgroundAudio(OBJECT)里面的回調函數只是當次主動操作有效。后臺自動暫停歌曲時并不會觸發該回調函數,wx.playBackgroundAudio(OBJECT),wx.pauseBackgroundAudio(),wx.seekBackgroundAudio(OBJECT),wx.stopBackgroundAudio()都是一樣的機制。

  7. 怎么獲取歌曲播放時的 回調函數?

    微信小程序官方文檔,playBackgroundAudio相關額API并沒有提供此函數,但是提供了wx.getBackgroundAudioPlayerState函數用于獲取歌曲播放時歌曲額進度信息,所以我們可以使用setInterval定時函數模擬這個事件。下面是我模擬的相關事件,

    var timer = setInterval(() => {
        wx.getBackgroundAudioPlayerState({
            success:function(res){
                //調用需要更新的
                //self._onUpdate(res);
            }
        });
    }, 500);
  8. 最重要的一點,pc端的模擬器,上面描述的事件觸的順序會可能和手機端的觸發順序不一樣(T-T,天坑,本來調試好好的,pc端app突然就抽風,炸了,有時候播放歌曲后 立刻就暫停,至今不知道是為什么,手機端卻是正常的),所以還是多真機調試吧,都是淚。



易優小程序(企業版)+靈活api+前后代碼開源 碼云倉庫:starfork
本文地址:http://www.xiuhaier.com/wxmini/doc/course/23609.html 復制鏈接 如需定制請聯系易優客服咨詢:800182392 點擊咨詢
QQ在線咨詢
AI智能客服 ×