中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在微信小程序中實現紅包雨功能

發布時間:2021-05-22 17:17:39 來源:億速云 閱讀:605 作者:Leah 欄目:web開發

今天就跟大家聊聊有關怎么在微信小程序中實現紅包雨功能,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

wxml:

<view wx:for="{{packetList}}" wx:for-index="index" wx:for-item="items">
 <image class="red-packet" src="{{items.src}}" >
 </image>
</view>

wxss:

.red-packet{
 width: 20px;
 height: 25px;
 z-index: 100;
 transition-property:transform,top;
 transform-origin:50% 50% 0;
 -webkit-transition-property:transform,top;
 -webkit-transform-origin:50% 50% 0;
}

js:

Page({
 
 /**
 * 頁面的初始數據
 */
 data: {
 windowWidth:"",//窗口寬度
 windowHeigh:"",//窗口高度
 packetList:[{}],//紅包隊列
 packetNum:200,//總共紅包的數量
 showInter:''// 循環動畫定時器
 },
 
 /**
 * 生命周期函數--監聽頁面加載
 */
 onLoad: function (options) {
 var that = this;
 
 // 獲取手機屏幕寬高
 wx.getSystemInfo({
  success: function (res) {
  that.setData({
   windowWidth: res.windowWidth,
   windowHeigh: res.windowHeight,
   top: res.windowHeight-100 //設置紅包初始位置
  })
  }
 })
 
 //建立臨時紅包列表
 var packetList=[];
 //建立臨時紅包圖片數組
 var srcList = ["../images/packet-one.png", "../images/packet-two.png"];
 //生成初始化紅包
 for(var i=0;i<that.data.packetNum;i++){
  // 生成隨機位置(水平位置)
  var left = Math.random() * that.data.windowWidth-20;
  // 優化位置,防止紅包越界現象,保證每個紅包都在屏幕之內
  if(left<0){
  left+=20;
  } else if (left > that.data.windowWidth){
  left-=20;
  }
  // 建立臨時單個紅包
  var packet = {
  src: srcList[Math.ceil(Math.random() * 2) - 1],
  top: -30,
  left:left,
  speed:Math.random() * 2500+3000  //生成隨機掉落時間,保證每個掉落時間保持在3秒到5.5秒之間
  }
  // 將單個紅包裝入臨時紅包列表
  packetList.push(packet);
  // 將生成的臨時紅包列表更新至頁面數據,頁面內進行渲染
  that.setData({
  packetList: packetList
  })
 }
 
 // 初始化動畫執行當前索引
 var tempIndex=0;
 // 開始定時器,每隔1秒掉落一次紅包
 that.data.showInter=setInterval(function(){
  // 生成當前掉落紅包的個數,1-3個
  var showNum = Math.ceil(Math.random() * 3);
  // 防止數組越界
  if (tempIndex * showNum>=that.data.packetNum){
  // 如果所有預生成的紅包已經掉落完,清除定時器
  clearInterval(that.data.showInter);
  }else{
  switch (showNum){
   case 1:
   //設置臨時紅包列表當前索引下的top值,此處top值為動畫運動的最終top值 
   packetList[tempIndex].top = that.data.windowHeigh;
   // 當前次掉落幾個紅包,索引值就加幾
   tempIndex+=1;
   break;
   case 2:
   packetList[tempIndex].top = that.data.windowHeigh;
   packetList[tempIndex + 1].top = that.data.windowHeigh;
   tempIndex+=2;
   break;
   case 3:
   packetList[tempIndex].top = that.data.windowHeigh;
   packetList[tempIndex + 1].top = that.data.windowHeigh;
   packetList[tempIndex + 2].top = that.data.windowHeigh;
   tempIndex += 3;
   break;
   default:
   console.log();
  }
  // 更新紅包列表數據
  that.setData({
   packetList: packetList
  })
  }
 },1000)
 }
})

看完上述內容,你們對怎么在微信小程序中實現紅包雨功能有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

苍山县| 张家港市| 阿坝县| 商丘市| 大新县| 云南省| 方城县| 盘山县| 天峻县| 华容县| 建平县| 永登县| 易门县| 台安县| 汉阴县| 鄂尔多斯市| 普安县| 广西| 长丰县| 宝兴县| 马公市| 四子王旗| 琼海市| 田东县| 广安市| 宜黄县| 仙桃市| 通州市| 安平县| 团风县| 错那县| 蒙阴县| 固安县| 丰宁| 祁东县| 调兵山市| 景泰县| 上饶县| 县级市| 桑植县| 谢通门县|