最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

微信小程序?qū)崿F(xiàn)走馬燈式抽獎

 更新時間:2022年04月15日 15:49:15   作者:LvyYoung  
這篇文章主要為大家詳細介紹了微信小程序?qū)崿F(xiàn)走馬燈式抽獎,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了微信小程序?qū)崿F(xiàn)走馬燈式抽獎的具體代碼,供大家參考,具體內(nèi)容如下

先來看下效果

設置獎項

awardList是從后臺拿到的獎項數(shù)組,list不夠八位時填充謝謝參與獎項,超過八位時截取數(shù)組,然后隨機打亂數(shù)組,保證獎項隨機布局,第四位固定填充立即抽獎按鈕

// 設置獎項
? settingAward(awardList) {
? ? const len = awardList.length;
? ? const award = {
?? ? ?awardName: '謝謝參與',
?? ? ?awardMoney: 0,
?? ? ?awardType: '00',
?? ? ?awardCode: ''
?? ?};
? ? let _awardList = [];
? ? if (len < 8) {
? ? ? for (let i = 0; i < 8 - len; i++) {
? ? ? ? awardList.push(JSON.parse(JSON.stringify(award)));
? ? ? }
? ? ? this.randArr(awardList);
? ? ? _awardList = awardList;
? ? ? console.log(_awardList)
? ? } else if (awardList.length == 8) _awardList = awardList;
? ? else {
? ? ? _awardList = awardList.splice(0, 9);
? ? }
? ? _awardList.splice(4, 0, {
? ? ? awardName: '立即抽獎'
? ? })
? ? return _awardList;
? },

? // 隨機打亂獎項
? randArr(arr) {
? ? for (var i = 0; i < arr.length; i++) {
? ? ? var iRand = parseInt(arr.length * Math.random());
? ? ? var temp = arr[i];
? ? ? arr[i] = arr[iRand];
? ? ? arr[iRand] = temp;
? ? }
? ? return arr;
? }

布局

主要用了flex布局,遍歷獎品list,index==4時渲染立即抽獎按鈕,否則渲染獎項

<view class="content">
? ? ? <view wx:for="{{awardList}}">
? ? ? ? <view wx:if="{{index == 4}}" class="award">
? ? ? ? ? <view wx:if="{{activityCount > 0}}" class="btn {{lucking ? 'lucking' : 'lucked'}}">
? ? ? ? ? ? <text class="btn_text" catchtap="startLuck">{{item.awardName}}</text>
? ? ? ? ? </view>
? ? ? ? ? <view wx:else class="btn lucking">
? ? ? ? ? ? <text class="btn_text">{{item.awardName}}</text>
? ? ? ? ? </view>
? ? ? ? </view>
? ? ? ? <view wx:else class="award {{currentIndex == index ? 'selected' : 'unselected'}}">
? ? ? ? ? <block wx:if="{{item.awardType == '00'}}">
? ? ? ? ? ? <view class="option">
? ? ? ? ? ? ? <image src="../../img/noluck_icon.png"></image>
? ? ? ? ? ? </view>
? ? ? ? ? ? <view class="txt">{{item.awardName}}</view>
? ? ? ? ? </block>
? ? ? ? ? <block wx:elif="{{item.awardType == '07'}}">
? ? ? ? ? ? <view class="option">
? ? ? ? ? ? ? <image src="../../img/mianxi_icon.png"></image>
? ? ? ? ? ? </view>
? ? ? ? ? ? <view class="txt">{{item.awardName}}</view>
? ? ? ? ? </block>
? ? ? ? ? <block wx:else>
? ? ? ? ? ? <view class="option">
? ? ? ? ? ? ? <image src="../../img/turntable_redpacket.png"></image>
? ? ? ? ? ? ? <text class="price">{{util.formatMoney(item.awardMoney)}}</text>
? ? ? ? ? ? </view>
? ? ? ? ? ? <view class="txt">{{item.awardName}}</view>
? ? ? ? ? </block>
? ? ? ? </view>
? ? ? </view>
</view>

抽獎邏輯

開始抽獎時默認選中第一個,初始化idArr為currentIndex的索引,即下一個獎項在哪激活
記錄圈數(shù)let cycles = 0;
開始設置interval = setInterval(frame, 100);
index == 8時輪詢了一圈,cycles加一
當cycles > 2時減速定時器interval = setInterval(frame, 300);
當抽獎接口有結(jié)果且轉(zhuǎn)了三圈后跳到獲獎位置,清除定時器并彈出獲獎結(jié)果彈窗

// 開始抽獎
? startLuck() {
? ?? ?const idArr = [0, 1, 2, 5, 8, 7, 6, 3];
? ? let cycles = 0;
? ? let that = this;
? ? let _awardList = this.data.awardList;
? ? let index = this.data.currentIndex;
? ? let activityCount = this.data.activityCount - 1;
? ? var interval = setInterval(frame, 100);
? ? this.setData({
? ? ? lucking: true,
? ? ? activityCount
? ? })
? ? let pending = true;
? ? post('122201.app', {
? ? ? duration: 2000,
? ? ? activityCode: this.data.activityCode
? ? }, {
? ? ? isMarket: true
? ? }).then(res => {
? ? ? pending = false;
? ? ? this.setData({
? ? ? ? awardResult: {
? ? ? ? ? awardCode: "",
? ? ? ? ? ...res
? ? ? ? }
? ? ? })
? ? }).catch(err => {
? ? ? clearInterval(interval);
? ? ? pending = false;
? ? ? activityCount += 1;
? ? ? this.setData({
? ? ? ? activityCount,
? ? ? ? lucking: false,
? ? ? })
? ? })

? ? function frame() {
? ? ? if (!pending) {
? ? ? ? // 轉(zhuǎn)三圈后跳到獲獎位置
? ? ? ? if (cycles > 3) {
? ? ? ? ? if (_awardList[that.data.currentIndex].awardCode == that.data.awardResult.awardCode) {
? ? ? ? ? ? clearInterval(interval);
? ? ? ? ? ? that.setData({
? ? ? ? ? ? ? lucking: false,
? ? ? ? ? ? ? showModal: true
? ? ? ? ? ? })
? ? ? ? ? ? return;
? ? ? ? ? }
? ? ? ? }
? ? ? }
? ? ? if (index == 8) {
? ? ? ? index = 0;
? ? ? ? if (!pending) {
? ? ? ? ? // 兩圈后轉(zhuǎn)盤減速
? ? ? ? ? if (cycles++ > 1) {
? ? ? ? ? ? clearInterval(interval);
? ? ? ? ? ? interval = setInterval(frame, 300);
? ? ? ? ? }
? ? ? ? }
? ? ? }
? ? ? // 設置獎項跳到對應位置
? ? ? that.setData({
? ? ? ? currentIndex: idArr[index++]
? ? ? })
? ? }
? },

wxss

.turntable .content {
? width: 568rpx;
? height: 568rpx;
? background: #F48002;
? border-radius: 20px;
? position: absolute;
? top: 90rpx;
? left: 30rpx;
? display: flex;
? flex-wrap: wrap;
? justify-content: space-around;
? align-items: center;
? padding: 10rpx;
? box-sizing: border-box;
}

.turntable .content .award {
? width: 174rpx;
? height: 174rpx;
? background: #FFFFFF;
? border-radius: 20rpx;
? display: flex;
? flex-direction: column;
? justify-content: center;
? align-items: center;
}

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Bootstrap Table實現(xiàn)定時刷新數(shù)據(jù)的方法

    Bootstrap Table實現(xiàn)定時刷新數(shù)據(jù)的方法

    這篇文章主要介紹了Bootstrap Table實現(xiàn)定時刷新數(shù)據(jù)的方法,在這里小編比較推薦使用第二種方法,需要的朋友參考下吧
    2018-08-08
  • JavaScript解決單線程缺陷webWorker問題

    JavaScript解決單線程缺陷webWorker問題

    Web Worker 為 Web 內(nèi)容在后臺線程中運行腳本提供了一種簡單的方法,本文給大家介紹JavaScript解決單線程缺陷——webWorker,需要的朋友可以參考下
    2023-06-06
  • 創(chuàng)建基于Bootstrap的下拉菜單的DropDownList的JQuery插件

    創(chuàng)建基于Bootstrap的下拉菜單的DropDownList的JQuery插件

    這篇文章主要介紹了創(chuàng)建基于Bootstrap的下拉菜單的DropDownList的JQuery插件 的相關資料,需要的朋友可以參考下
    2016-06-06
  • javascript中[]和{}對象使用介紹

    javascript中[]和{}對象使用介紹

    []不僅僅可以表示數(shù)組,可以直接通過對象的屬性設置值和訪問值,接下來為大家介紹下[]和{}對象的使用,感興趣的你可以參考下哈
    2013-03-03
  • 實例解析package.json和最常見的scripts字段

    實例解析package.json和最常見的scripts字段

    日常開發(fā)中,現(xiàn)在的前端開發(fā)已經(jīng)被三大框架取代,其中最主流的不過vue和react,而開發(fā)這些項目的時候不得不接觸package.json這個文件,可你真的了解這個文件嗎?今天給大家聊聊package.json和最常見的scripts字段,感興趣的朋友一起看看吧
    2023-04-04
  • js用正則表達式篩選年月日的實例方法

    js用正則表達式篩選年月日的實例方法

    在本篇文章里小編給大家整理的是一篇關于js用正則表達式篩選年月日的實例方法,對此有興趣的朋友們可以學習下。
    2021-01-01
  • 微信小程序?qū)崿F(xiàn)簡單聊天室

    微信小程序?qū)崿F(xiàn)簡單聊天室

    這篇文章主要為大家詳細介紹了微信小程序?qū)崿F(xiàn)簡單聊天室,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • js統(tǒng)計頁面上每個標簽的數(shù)量實例代碼

    js統(tǒng)計頁面上每個標簽的數(shù)量實例代碼

    這篇文章通過實例代碼給大家講解了通過js統(tǒng)計頁面上每個標簽的數(shù)量,代碼很簡單,具有一定的參考借鑒價值,需要的朋友參考下吧
    2018-05-05
  • 微信小程序?qū)崿F(xiàn)Swiper輪播圖效果

    微信小程序?qū)崿F(xiàn)Swiper輪播圖效果

    這篇文章主要介紹了微信小程序?qū)崿F(xiàn)Swiper輪播圖效果,文中示例代碼介紹的非常詳細,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • Bootstrap 輪播(Carousel)插件

    Bootstrap 輪播(Carousel)插件

    Bootstrap 輪播(Carousel)插件是一種靈活的響應式的向站點添加滑塊的方式。下面通過本文給大家介紹Bootstrap 輪播(Carousel)插件,非常不錯,需要的朋友參考下吧
    2016-12-12

最新評論

奉化市| 康保县| 杨浦区| 化隆| 麻栗坡县| 电白县| 阿勒泰市| 德清县| 稻城县| 彭水| 泉州市| 开江县| 北京市| 深水埗区| 祁门县| 汤阴县| 仁化县| 汶上县| 公安县| 合川市| 罗城| 五大连池市| 沛县| 东至县| 乡宁县| 阳高县| 类乌齐县| 延安市| 仁布县| 伽师县| 宾川县| 青川县| 伊金霍洛旗| 高碑店市| 承德县| 蒙山县| 霍州市| 正安县| 岢岚县| 淮阳县| 河曲县|