微信小程序如何实现走马灯式抽奖
发表于:2025-11-13 作者:千家信息网编辑
千家信息网最后更新 2025年11月13日,今天小编给大家分享一下微信小程序如何实现走马灯式抽奖的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起
千家信息网最后更新 2025年11月13日微信小程序如何实现走马灯式抽奖
今天小编给大家分享一下微信小程序如何实现走马灯式抽奖的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
先来看下效果
设置奖项
awardList是从后台拿到的奖项数组,list不够八位时填充谢谢参与奖项,超过八位时截取数组,然后随机打乱数组,保证奖项随机布局,第四位固定填充立即抽奖按钮
// 设置奖项 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时渲染立即抽奖按钮,否则渲染奖项
{{item.awardName}} {{item.awardName}} {{item.awardName}} {{item.awardName}} {{util.formatMoney(item.awardMoney)}} {{item.awardName}}
抽奖逻辑
开始抽奖时默认选中第一个,初始化idArr为currentIndex的索引,即下一个奖项在哪激活
记录圈数let cycles = 0;
开始设置interval = setInterval(frame, 100);index == 8时轮询了一圈,cycles加一
当cycles > 2时减速定时器interval = setInterval(frame, 300);
当抽奖接口有结果且转了三圈后跳到获奖位置,清除定时器并弹出获奖结果弹窗
// 开始抽奖 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) { // 转三圈后跳到获奖位置 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) { // 两圈后转盘减速 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;}以上就是"微信小程序如何实现走马灯式抽奖"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。
奖项
知识
篇文章
位置
布局
数组
获奖
走马灯
程序
内容
定时器
按钮
结果
逻辑
不同
很大
不够
后台
大部分
奖品
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
虚拟服务器淘宝
共建网络安全班会ppt
怎么在dos界面打开数据库
沈阳手机应用软件开发多少钱
网络技术华为
服务器显卡可以用于家用电脑吗
上位机软件开发哪些设备
数据库视图有如下说法
广州正规的网络数据库维护
银川黄东路计算机网络技术学校
安装安全服务器名是啥意思
网络安全是做什么工作的
齐齐哈尔黑河java软件开发
腾讯云服务器镜像制作
数据库四级什么水平
数据库技术及应用 选择题
查询服务器ssh端口号
CUBA数据库唐文鹏
不属于完善网络安全法
阿里云服务器cpu突然变高
构建网络安全的启示
发票打印后显示数据库连接失败
网络安全绘画500张
5g网络技术基础
五年规划软件开发
安阳网络安全和信息化
做软件开发是学什么专业
留言板数据库和php代码
pymysql数据库加密
幂等 数据库