亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

微信小程序有旋轉動畫效果的音樂組件實例代碼

2019-11-19 13:11:44
字體:
來源:轉載
供稿:網友

在微信開發中,寫過的一個簡單的音樂播放組件,記錄下。

music

音樂播放組件。

屬性

屬性名 類型 默認值 說明
music String   傳入的音樂資源地址
musicStyle String (隨便寫了個) 音樂組件的樣式
rotate Boolean true 播放時是否有旋轉效果
iconOn String (隨便寫了個) 音樂播放時的icon地址
iconOff String (隨便寫了個) 音樂暫停時的icon地址

代碼

properties: {  // 音樂路徑  music: {   type: String,   value: '',   observer: function (newVal) {    this._initMusic(newVal)   }  },  // 樣式  musicStyle: {   type: String,   value: 'position: absolute; right: 20rpx; top: 20rpx; width: 100rpx; height: 100rpx;'  },  // 播放時是否有旋轉效果  rotate: {   type: Boolean,   value: true  },  // 播放時的icon路徑  iconOn: {   type: String,   value: '/resources/img/music-on.png' // 請填寫默認的圖片地址  },  // 暫停時的icon路徑  iconOff: {   type: String,   value: '/resources/img/music-off.png' // 請填寫默認的圖片地址  } }

初始化音樂

首先,在properties中接收頁面傳來的音樂文件地址,

music: { type: String, value: '', observer: function (newVal) {  this._initMusic(newVal) }}

這里的處理是,一旦接收到頁面傳來的 music 地址,就初始化音樂:

_initMusic: function (newVal) { // 當頁面傳來新的music時,先銷毀之前的audioCtx,否則頁面會很嗨 if (this.data.audioCtx) {  this.data.audioCtx.destroy() } if (newVal) {  var audioCtx = wx.createInnerAudioContext()  this.setData({    audioCtx: audioCtx  })  if (this.data.audioStatus == '1') {    audioCtx.autoplay = true  }  audioCtx.loop = true  audioCtx.src = newVal }}

 audioStatus 用來記錄音樂播放狀態,在data中默認設置為1:

data: {  icon: '',  audioStatus: 1,  audioCtx: '',  musicClass: 'music-on'}

wxml文件里,只用一個 <image> 標簽:

<image class='music {{ rotate && musicClass }}'     style="{{ musicStyle }}"     src="{{ icon }}"     bindtap='_switch'     wx:if="{{ music }}"></image>

其中, icon 在組件ready()時賦值成播放狀態的icon:

ready() {  this.setData({   icon: this.data.iconOn  })}

音樂旋轉效果

音樂播放時的旋轉效果,是用css動畫實現的,wxss文件如下:

.music { position: absolute; z-index: 99; -webkit-animation-iteration-count: infinite;}/* 旋轉class */.music-on { animation: music-rotate 4s linear infinite;}/* 旋轉動畫 */@keyframes music-rotate { 0% {  transform: rotateZ(0deg); }  100% {  transform: rotateZ(360deg); }}

當 rotate 為true時,使 musicClass 的值為 music-on,就能實現旋轉了。

當然, musicClass 需要用 this.setData 的方式來切換值。

爆丑照:

音樂控制

手動切換

手動點擊時,用取反的邏輯控制音樂的播放和暫停:

_switch: function () { // 如果是播放就停止  if (this.data.audioStatus) {  this.setData({   audioStatus: 0,   icon: this.data.iconOff,   musicClass: ''  })  this.data.audioCtx.pause() // 如果是停止就播放 } else {  this.setData({   audioStatus: 1,   icon: this.data.iconOn,   musicClass: 'music-on'  })  this.data.audioCtx.play() }}

其它情況

同時,還要對下列情況做處理:

  • 分享時,進入選好友界面、音樂停止,分享回來后,音樂沒有繼續播放
  • 從此頁面跳轉到下一個頁面時,音樂還在繼續
  • 從此頁面撤回到上一個頁面時,音樂還在繼續

解決的方法,是在組件的methods中又寫了兩個方法:

// 寫在組件的methods中: // 在引用組件頁面的onShow()中調用// 否則,如果當發生分享頁面行為并返回時,音樂不會自動播放onShow: function () { if (this.data.music && this.data.audioStatus) {  this.data.audioCtx.play() }},// 在引用組件頁面的onHide()中調用// 否則,在跳轉到下一個頁面后,音樂還在繼續onHide: function () { if (this.data.music && this.data.audioStatus) {  this.data.audioCtx.pause() } this.setData({  animationData: {} })}

這兩個方法分別在頁面中的 onShow 和 onHide 中調用,調用方式就是父組件獲取到子組件實例對象:

例如,給<music>組件加id為"music-componet",調用時就是:

// 寫在調用頁面中 onShow: function () {  this.selectComponent('#music-component').onShow()},onHide: function () {  this.selectComponent('#music-component').onHide()}

最后,在組件的detached中也調用一下 onHide 方法:

// 頁面關閉時銷毀音樂detached() {  this.onHide()}

使用

你可以

通過閱讀本文,根據自身實際情況寫一個

或者,直接湊合用

總結

以上所述是小編給大家介紹的微信小程序有旋轉動畫效果的音樂組件,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产香蕉97碰碰久久人人| 狠狠躁天天躁日日躁欧美| 一区二区三区视频免费在线观看| 亚洲精品自在久久| 欧美性在线视频| 日韩在线精品一区| 久久久人成影片一区二区三区| 91麻豆国产语对白在线观看| 欧美电影免费在线观看| 日韩欧美亚洲综合| 国产日韩视频在线观看| 青青草国产精品一区二区| 国产一区视频在线播放| 亚洲欧美视频在线| 亚洲视频在线播放| 国产成人免费av电影| 欧美激情亚洲激情| 久久久久久久一区二区三区| 色偷偷av亚洲男人的天堂| 日本中文字幕不卡免费| 91精品啪在线观看麻豆免费| 国产精品久久久久久久久久三级| 国产日韩欧美视频在线| 精品日韩中文字幕| 欧美性猛交xxxx乱大交3| 高跟丝袜一区二区三区| 欧美性xxxxx极品| 菠萝蜜影院一区二区免费| 亚洲美女在线观看| 欧美做受高潮电影o| 亚洲级视频在线观看免费1级| 亚洲人成77777在线观看网| 亚洲人成五月天| 亚洲第一二三四五区| 成人免费观看49www在线观看| 国产偷国产偷亚洲清高网站| 亚洲国产精品福利| 91色在线观看| 亚洲成人精品久久久| 欧美日韩一区二区三区在线免费观看| 欧美激情va永久在线播放| 日韩欧美亚洲成人| 日韩激情片免费| 日韩免费电影在线观看| 国产精品入口日韩视频大尺度| 欧美精品一区二区三区国产精品| 92版电视剧仙鹤神针在线观看| 久久亚洲国产精品成人av秋霞| 亚洲人成电影网站| 欧美乱妇40p| 国产精品白丝jk喷水视频一区| 亚洲一区二区三| 日韩av中文字幕在线免费观看| 亚洲最大的网站| 欧美成人性生活| 国产精品av在线播放| 国产日韩亚洲欧美| 日韩经典中文字幕| 欧美日韩一区免费| 91视频-88av| 欧美精品18videos性欧| 91沈先生作品| 久久中国妇女中文字幕| 国产男女猛烈无遮挡91| 亚洲3p在线观看| 国产精品88a∨| 国产精品成人观看视频国产奇米| 久久91精品国产91久久久| 亚洲丝袜一区在线| 亚洲午夜精品视频| 国产成人在线一区二区| 国产日本欧美一区二区三区| 亚洲第一视频网| 日韩av在线电影网| 琪琪第一精品导航| 国产精品久久婷婷六月丁香| 中文亚洲视频在线| 久久亚洲精品一区| 亚洲一区二区精品| 国产精品91在线观看| 日韩大胆人体377p| 精品小视频在线| 韩国福利视频一区| 国产91色在线免费| 隔壁老王国产在线精品| 欧美日韩xxx| 国产精品十八以下禁看| 欧美高清视频在线观看| 欧美日韩一区二区在线播放| 在线视频免费一区二区| 91香蕉电影院| 一区二区三区动漫| 日韩中文字幕在线播放| 久久久久久网址| 日韩成人网免费视频| 欧美日韩aaaa| 日韩视频免费观看| 国产成人精品久久亚洲高清不卡| 亚洲人午夜色婷婷| 亚洲国产福利在线| 亚洲国产精品热久久| 欧美日韩中文字幕日韩欧美| 欧美刺激性大交免费视频| 国产精品精品视频一区二区三区| 国产精品视频公开费视频| 日韩av手机在线| 日本中文字幕不卡免费| 久久免费视频这里只有精品| 亚洲激情在线视频| 久久中文字幕在线视频| 国产午夜精品久久久| 日韩欧美在线网址| 亚洲无线码在线一区观看| 国产免费一区视频观看免费| 粗暴蹂躏中文一区二区三区| 国产精品欧美日韩| 丝袜亚洲欧美日韩综合| 亚洲美女www午夜| 97国产精品人人爽人人做| 欧美成人精品三级在线观看| 国产精品一区二区电影| 日韩一区二区三区xxxx| 久久91精品国产91久久跳| 国产精品wwww| 97在线精品视频| 91av国产在线| 日韩精品免费在线视频| 国产精品狠色婷| 国产精品日日做人人爱| 91中文在线视频| 岛国av一区二区在线在线观看| 成人欧美一区二区三区黑人孕妇| 亚洲欧洲美洲在线综合| 国产精品视频大全| 538国产精品一区二区在线| 精品激情国产视频| 91免费的视频在线播放| 精品福利在线看| 亚洲国产精彩中文乱码av| 亚洲国产精品成人av| 国产一区视频在线播放| 欧美日韩高清在线观看| 国产精品成人av在线| 91精品视频在线看| 国产精品一区二区三区久久久| 8090成年在线看片午夜| 成人免费激情视频| 91麻豆国产语对白在线观看| 91精品国产综合久久香蕉| 在线视频免费一区二区| 久久久亚洲天堂| 热re99久久精品国产66热| 亚洲欧美一区二区三区在线| 久久伊人91精品综合网站| 亚洲电影在线观看| 成人国产精品一区| 日韩最新在线视频| 亚洲老板91色精品久久| 亚洲一区二区三区成人在线视频精品| 欧美视频在线观看免费| 亚洲日本中文字幕免费在线不卡| 国产精品自产拍在线观看| 亚洲第一区中文99精品| 亚洲视频免费一区|