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

首頁 > 編程 > JavaScript > 正文

微信小程序之仿微信漂流瓶實例

2019-11-19 18:35:18
字體:
來源:轉載
供稿:網友

周末找事做做.看到微信里有個漂流瓶.試著敲了敲.

這里是用leancloud做后臺.涉及到語音和文字的儲存,查詢.自己不會寫后臺代碼,對于我算是個福利.

歡迎交流!

下面帶圖說模塊:

1.主頁面

三個button.不多說了.別吐槽這畫風.哈哈哈.

2.編輯漂流瓶內容

內容可以是語音,也可以是文字.隨意切換.

這里是語音的.錄音完成后直接扔出去.

3.撿一個漂流瓶

有兩種情況.一是沒有撿到.就是一個海星;二是撿到了.語音或者是文字.

1.海星

2.撿到了漂流瓶

2.1  獲取到文字.彈框顯示文字

2.2 獲取到語音.直接播放

3.我的瓶子

語音和文字兩類.

下面上代碼:

1.index.wxml

<!--index.wxml--> <view class="play-style">  <view class="playstyle">  <image class="img" src="{{getSrc}}" bindtap="get"></image>  <text>撿一個</text>  </view>  <view class="leftstyle">  <image class="img" src="{{throwSrc}}" bindtap="throw"></image>  <text>扔一個</text>  </view>  <view class="rightstyle">  <image class="img" src="{{mySrc}}" bindtap="mine"></image>  <text>我的瓶子</text>  </view> </view> 

 2.index.wxss

 /**index.wxss**/  page {  background-image: url('http://ac-nfyusptg.clouddn.com/0ee678402f996ad3a5c2.gif');  background-attachment: fixed;  background-repeat: no-repeat;  background-size: cover; }  .play-style {  position: fixed;  bottom: 50rpx;  left: 0;  height: 240rpx;  width: 100%;  text-align: center;  color: #fff; }  .playstyle {  position: absolute;  width: 160rpx;  height: 160rpx;  top: 10rpx;  left: 295rpx; }  .leftstyle {  position: absolute;  width: 160rpx;  height: 160rpx;  top: 10rpx;  left: 67.5rpx; }  .rightstyle {  position: absolute;  width: 160rpx;  height: 160rpx;  top: 10rpx;  right: 67.5rpx; }  .img {  width: 160rpx;  height: 160rpx; } 

3.index.js

//index.js //獲取應用實例 var app = getApp() const AV = require('../../utils/av-weapp.js'); Page({  data: {  getSrc: "../../images/a.png",//撿一個  throwSrc: "../../images/b.png",//扔一個  mySrc: "../../images/c.png"http://我的  },  onLoad: function () {  const user = AV.User.current();  // 調用小程序 API,得到用戶信息  wx.getUserInfo({   success: ({userInfo}) => {   console.log(userInfo)   // 更新當前用戶的信息   user.set(userInfo).save().then(user => {    // 成功,此時可在控制臺中看到更新后的用戶信息    this.globalData.user = user.toJSON();   }).catch(console.error);   }  });  },  //撿一個  get: function () {  console.log("撿一個")  //隨機去后臺拉取一個錄音  wx.navigateTo({   url: '../get/get',   success: function (res) {   // success   },   fail: function () {   // fail   },   complete: function () {   // complete   }  })  },  //扔一個  throw: function () {  console.log("扔一個")  wx.navigateTo({   url: '../write/write',   success: function (res) {   // success   },   fail: function () {   // fail   },   complete: function () {   // complete   }  })  },  //我的瓶子  mine: function () {  console.log("我的瓶子")  wx.navigateTo({   url: '../mine/mine',   success: function (res) {   // success   },   fail: function () {   // fail   },   complete: function () {   // complete   }  })  } }) 

 4.write.js

 //index.js //獲取應用實例 var app = getApp() const AV = require('../../utils/av-weapp.js'); Page({  data: {  getSrc: "../../images/a.png",//撿一個  throwSrc: "../../images/b.png",//扔一個  mySrc: "../../images/c.png"http://我的  },  onLoad: function () {  const user = AV.User.current();  // 調用小程序 API,得到用戶信息  wx.getUserInfo({   success: ({userInfo}) => {   console.log(userInfo)   // 更新當前用戶的信息   user.set(userInfo).save().then(user => {    // 成功,此時可在控制臺中看到更新后的用戶信息    this.globalData.user = user.toJSON();   }).catch(console.error);   }  });  },  //撿一個  get: function () {  console.log("撿一個")  //隨機去后臺拉取一個錄音  wx.navigateTo({   url: '../get/get',   success: function (res) {   // success   },   fail: function () {   // fail   },   complete: function () {   // complete   }  })  },  //扔一個  throw: function () {  console.log("扔一個")  wx.navigateTo({   url: '../write/write',   success: function (res) {   // success   },   fail: function () {   // fail   },   complete: function () {   // complete   }  })  },  //我的瓶子  mine: function () {  console.log("我的瓶子")  wx.navigateTo({   url: '../mine/mine',   success: function (res) {   // success   },   fail: function () {   // fail   },   complete: function () {   // complete   }  })  } }) 

5.get.js

//get.js //獲取應用實例 var app = getApp() const AV = require('../../utils/av-weapp.js'); Page({  data: {  getPngSecond: "http://ac-ejx0nsfy.clouddn.com/6f50e35237db20a4edd6.png",//海星  getPngThrid: "http://ac-ejx0nsfy.clouddn.com/15070f4f33bb6090ec1b.png",//漂流瓶  isGet: true,//是否撿到了漂流瓶  maskDisplay: 'none',  slideAnimation: {},  slideHeight: 0,  slideRight: 0,  slideWidth: 0,  isPlaying: false,  plp: [],  j: 1,  contentText: ''  },  onLoad: function () {  var _this = this;  //獲取屏幕寬高  wx.getSystemInfo({   success: function (res) {   var windowWidth = res.windowWidth;   var windowHeight = res.windowHeight;   console.log('windowWidth: ' + windowWidth)   console.log('windowHeight: ' + windowHeight)   _this.setData({    imageWidth: windowWidth,    imageHeight: windowHeight,    slideHeight: res.windowHeight * 0.6,    slideRight: res.windowWidth,    slideWidth: res.windowWidth * 0.80   })   }  })  var num = Math.round(Math.random() * 9 + 1);  console.log(num)  if (num > 5) {   //撿到漂流瓶   this.setData({   bgPng: this.data.getPngThrid,   isGet: true   })  } else {   //海星   this.setData({   bgPng: this.data.getPngSecond,   isGet: false   })  }   //去后臺拉取漂流瓶數據,1.獲取到文字,左邊彈框;2.獲取到語音,播放  //1.獲取語音  var _this = this;  //獲取語音漂流瓶  var queryRecord = new AV.Query('_File');  queryRecord.find().then(function (myrecord) {   console.log(myrecord);   var audio = []   for (var i = 0; i < myrecord.length; i++) {   //判斷上傳用戶身份   if (myrecord[i].attributes.name == 'myRecord_dzp') {    _this.data.plp = _this.data.plp.concat(myrecord[i].attributes.url);   }   console.log(myrecord[i].attributes.url);   }  }).catch(function (error) {   alert(JSON.stringify(error));  });   //2.獲取文本  var queryText = new AV.Query('TodoFolder');  // 查詢 name 是 myText 的漂流瓶內容  queryText.equalTo('name', 'myText');  queryText.find().then(function (results) {   var mytext = []   for (var i = 0; i < results.length; i++) {   var query = new AV.Query('TodoFolder');   console.log(results[i].id)   query.get(results[i].id).then(function (todo) {    // 成功獲得實例    // data 就是 id 為 57328ca079bc44005c2472d0 的 TodoFolder 對象實例    console.log(    todo.attributes.plp_content    )    _this.data.plp = _this.data.plp.concat(todo.attributes.plp_content);   }, function (error) {    // 異常處理   });   }   }, function (error) {  });    /**  * 監聽音樂停止  */  wx.onBackgroundAudioStop(function () {   console.log('onBackgroundAudioStop')   _this.setData({   isPlaying: false   })   clearInterval(_this.timer)  })  },  onReady: function () {  // 標題欄  wx.setNavigationBarTitle({   title: '撿一個'  })  },  //右上角關閉按鈕  onClick: function () {  var _this = this;  //撿到海星,return  if (!this.data.isGet) return  this.setData({   isGet: false  })  console.log("打開漂流瓶")  //隨機獲取一個索引  var index = parseInt(Math.random() * this.data.plp.length)  var content = this.data.plp[index]  if (content.indexOf("http://") == 0) {   wx.playBackgroundAudio({   dataUrl: _this.data.plp[index],   title: _this.data.plp[index],   coverImgUrl: ''   })   playRecord.call(_this)  } else {   _this.setData({   contentText: content   })   slideUp.call(_this);  }  },  //遮罩點擊 側欄關閉  slideCloseEvent: function () {  slideDown.call(this);  } })  //側欄展開 function slideUp() {  var animation = wx.createAnimation({  duration: 600  });  this.setData({ maskDisplay: 'block' });  animation.translateX('110%').step();  this.setData({  slideAnimation: animation.export()  }); }  //側欄關閉 function slideDown() {  var animation = wx.createAnimation({  duration: 800  });  animation.translateX('-110%').step();  this.setData({  slideAnimation: animation.export()  });  this.setData({ maskDisplay: 'none' }); }  //播放動畫 function playRecord() {  var _this = this;  this.setData({  isPlaying: true  })  //話筒幀動畫  var i = 1;  this.timer = setInterval(function () {  i++;  i = i % 5;  _this.setData({   j: i  })  }, 200); } 

6.mine.js

//mine.js //獲取應用實例 var app = getApp() const AV = require('../../utils/av-weapp.js'); Page({  data: {  audio: [],//錄音集合  mytext: [],//文本集合  isPlaying: false,//是否在播放語音  },  onLoad: function () {  var _this = this;  //獲取語音漂流瓶  var queryRecord = new AV.Query('_File');  queryRecord.find().then(function (myrecord) {   console.log(myrecord);   var audio = []   for (var i = 0; i < myrecord.length; i++) {   //判斷上傳用戶身份   if (myrecord[i].attributes.name == 'myRecord_dzp') {    _this.data.audio = _this.data.audio.concat(myrecord[i].attributes.url);   }   console.log(myrecord[i].attributes.url);   }  }).catch(function (error) {   alert(JSON.stringify(error));  });  //獲取文本漂流瓶  var queryText = new AV.Query('TodoFolder');  // 查詢 name 是 myText 的漂流瓶內容  queryText.equalTo('name', 'myText');  queryText.find().then(function (results) {   var mytext = []   for (var i = 0; i < results.length; i++) {   var query = new AV.Query('TodoFolder');   console.log(results[i].id)   query.get(results[i].id).then(function (todo) {    // 成功獲得實例    // data 就是 id 為 57328ca079bc44005c2472d0 的 TodoFolder 對象實例    console.log(    todo.attributes.plp_content    )     _this.data.mytext = _this.data.mytext.concat(todo.attributes.plp_content);    // console.log(_this.data.mytext)   }, function (error) {    // 異常處理   });   }   }, function (error) {  });    /**  * 監聽音樂停止  */  wx.onBackgroundAudioStop(function () {   console.log('onBackgroundAudioStop')   _this.setData({   isPlaying: false   })   clearInterval(_this.timer)  })   },  onReady: function () {  // 標題欄  wx.setNavigationBarTitle({   title: '我的瓶子'  })  },  //彈框顯示文本內容  gotoDisplay: function (e) {  this.setData({   isPlaying: false  })  clearInterval(this.timer)  //數組索引  var index = e.currentTarget.dataset.key;  wx.showModal({   title: '內容',   content: this.data.mytext[index],   showCancel: false,   success: function (res) {   if (res.confirm) {    console.log('用戶點擊確定')   }   }  })  },  //播放音頻  gotoPlay: function (e) {  var index = e.currentTarget.dataset.key;  console.log(this.data.audio[index])  //開啟播放動畫  playRecord.call(this)  wx.playBackgroundAudio({   dataUrl: this.data.audio[index],   title: this.data.audio[index],   coverImgUrl: ''  })  } })   //播放動畫 function playRecord() {  var _this = this;  this.setData({  isPlaying: true  })  //話筒幀動畫  var i = 1;  this.timer = setInterval(function () {  i++;  i = i % 5;  _this.setData({   j: i  })  }, 200); }

數據的增刪改查請看leancloud文檔.

demo下載:demo

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
韩剧1988免费观看全集| 国产大片精品免费永久看nba| 最新亚洲国产精品| 欧美激情中文网| 亚洲一区二区三区久久| 欧美在线激情视频| 美女扒开尿口让男人操亚洲视频网站| 91免费福利视频| www.99久久热国产日韩欧美.com| 2020欧美日韩在线视频| 一道本无吗dⅴd在线播放一区| 欧美黑人一级爽快片淫片高清| 精品福利樱桃av导航| 欧美另类精品xxxx孕妇| 欧美日韩在线视频观看| 国产成人精品在线播放| 国产午夜精品视频| 国产精品高潮呻吟视频| 欧美怡春院一区二区三区| 97精品在线视频| 国产一区二区三区欧美| 国产精品色午夜在线观看| 欧美激情免费视频| 国产精品久久久| 久久久欧美一区二区| 国产自摸综合网| 色樱桃影院亚洲精品影院| 国产视频精品自拍| 国产欧美最新羞羞视频在线观看| 国产精品亚发布| 亚洲精品一区二区三区婷婷月| 国产精品狠色婷| 亚洲第一天堂无码专区| 亚洲成在人线av| 成人在线激情视频| 亲子乱一区二区三区电影| 欧美精品videosex性欧美| 欧美夫妻性视频| 国产日韩视频在线观看| www.99久久热国产日韩欧美.com| 国产精品久久久久久av下载红粉| 欧美在线视频导航| 久久精品国产亚洲7777| 亚洲iv一区二区三区| 午夜欧美大片免费观看| 日韩中文字幕在线免费观看| 日韩美女在线看| 精品视频—区二区三区免费| 久久全球大尺度高清视频| 亚洲精品美女视频| 九九热精品视频国产| 精品女厕一区二区三区| 亚洲va久久久噜噜噜久久天堂| 久久久国产在线视频| 色哟哟入口国产精品| 国产成人精品一区二区| 日韩成人在线播放| wwwwwwww亚洲| 青青草国产精品一区二区| 国产mv久久久| 在线午夜精品自拍| 精品国产乱码久久久久久虫虫漫画| 国产精品男女猛烈高潮激情| 亚洲国产精品久久91精品| 九九精品在线播放| 亚洲国产中文字幕久久网| 久热爱精品视频线路一| 88国产精品欧美一区二区三区| 亚洲综合在线小说| 91高潮在线观看| 国产69精品久久久久9| 清纯唯美亚洲综合| 韩国福利视频一区| 精品久久中文字幕久久av| 中文字幕成人在线| 国产精品视频网址| 欧美高清不卡在线| 日韩有码片在线观看| 亚洲日本aⅴ片在线观看香蕉| 97视频在线观看网址| 国产精品视频最多的网站| 久久久之久亚州精品露出| 国产一区二区丝袜高跟鞋图片| 全球成人中文在线| 欧美激情2020午夜免费观看| 日韩男女性生活视频| 日韩中文字幕视频在线| 成人国内精品久久久久一区| 欧美精品日韩www.p站| 精品中文字幕久久久久久| 日本久久久久久久久| 久久精品夜夜夜夜夜久久| 国产午夜一区二区| 亚洲欧美一区二区激情| 91香蕉电影院| 午夜精品www| 成人黄色av免费在线观看| 国产在线视频2019最新视频| 亚洲精品wwww| 国产亚洲欧美日韩一区二区| 久久久人成影片一区二区三区观看| 亚洲人成五月天| 欧美一级黑人aaaaaaa做受| 色综合影院在线| 伊人青青综合网站| 久久久久亚洲精品国产| 91精品视频在线免费观看| 国产免费一区二区三区香蕉精| 久久久人成影片一区二区三区| 久久久午夜视频| 影音先锋欧美精品| 亚洲国产日韩欧美在线99| 国产视频精品在线| 中文字幕国产亚洲2019| 亚洲图片欧美午夜| 国产日韩欧美一二三区| 国产精品成人久久久久| 日本久久91av| 一区二区在线免费视频| 成人精品网站在线观看| 亚洲精品成人免费| 精品欧美一区二区三区| 午夜精品久久久久久久久久久久久| 91在线无精精品一区二区| 国产精品va在线| 精品视频偷偷看在线观看| 中文字幕免费精品一区| 性色av一区二区三区在线观看| 国产精品极品美女在线观看免费| 亚洲国产精品va在线看黑人| 黄色成人av网| 欧美黑人极品猛少妇色xxxxx| 日韩视频免费中文字幕| 亚洲自拍高清视频网站| 色老头一区二区三区在线观看| 日韩精品视频在线| 国产欧美日韩免费| 欧美激情欧美狂野欧美精品| 欧美日韩美女在线观看| 97婷婷大伊香蕉精品视频| 日韩一区二区精品视频| 中文字幕亚洲字幕| 亚洲一区二区三区乱码aⅴ蜜桃女| 在线视频中文亚洲| 狠狠综合久久av一区二区小说| 日韩av手机在线| 97国产一区二区精品久久呦| 亚洲欧美日韩精品| 国内久久久精品| 久久精品在线播放| 欧美乱大交xxxxx另类电影| 久久天天躁狠狠躁夜夜躁| 亚洲欧美日韩天堂一区二区| 国产精品亚洲欧美导航| 亚洲黄色成人网| 亚洲欧美日韩中文视频| 欧美激情免费观看| 欧美精品激情视频| 91av网站在线播放| 国产日韩精品电影| 欧美最猛性xxxxx亚洲精品| 欧美一区二三区| 久久久视频精品| 亚洲国产欧美日韩精品|