转盘抽奖活动

news/2025/3/14 17:08:39/

1、页面布局(转盘+按钮)

按钮放在转盘中间的位置

<view class="mian-middle-middle animated fadeInUp"><!-- 转盘 --><view class="rotaryTable" :style="{transform:'rotateZ('+deg+'deg)'}"><image class="rotaryTable-pic" src="转盘图片"></image></view><!-- 抽奖按钮 --><view class="button" @click="lottery"><image class="button-pic" src="按钮图片"></image></view>
</view>
<!-- 奖品弹窗-->
<uni-popup ref="popup" class="prize-pop" type="center"><view class="pop-prize-bg" @click="closePop()"><image class="img" :src="prize_image" mode="widthFix"></image><view class="message">{{prize_name}}</view></view>
</uni-popup>

2、转盘+按钮的样式

<style lang="scss" scoped>.mian-middle-middle {position: relative;margin-top: -100rpx;.rotaryTable {width: 673rpx;height: 673rpx;margin: 0 auto;margin-top: 34rpx;.rotaryTable-pic {width: 673rpx;height: 673rpx;}}.button {width: 198rpx;height: 237rpx;position: absolute;left: 50%;top: 0;margin-top: 184rpx;margin-left: -104rpx;.button-pic {width: 208rpx;height: 254rpx;}}}
</style>

3、抽奖逻辑

点击按钮触发lottery方法。lottery方法调用接口,返回抽中的奖品信息(图片、编码)。

  • 奖品固定

如果奖品是固定的,就可以直接把所有的奖品存在前端数组中 levelsArr[],接口只需要返回一个code,通过code来在数组中找到对应的奖品图片。保存在本地的图片可以用编码来命名,然后赋值

this.prize_image = '../static/turnPlate/prizes/'+res.code+'.png';

  • 奖品不固定

不用关心奖品是什么,直接赋值

    this.award = res.code;
    this.prizeName = res.name; 
    this.prize_image = res.image;

但是不管是哪种,都要找到在数组 levelsArr 中的下标,通过下标index在数组 arr 中找到对应的旋转的度数。

注意:levelsArr 中的顺序是按照转盘上的顺序从垂直90°逆时针来的,及90°-135°是特等奖,135°-180°是五等奖,以此类推~

data(){return {endLoading: true,deg: 0, //控制转盘转动度数award: '', //中奖奖品codeawardIndex: 0,prize_name:'', //中奖奖品nameprize_image:'',// 奖品图片//360/8=45deg  每个奖项的间隔度数//45/2=22.5deg 起始位置arr: [22.5, 67.5, 112.5, 157.5, 202.5, 247.5, 292.5, 337.5], ///旋转角度levelsArr: [{level: "特等奖",name: "特等奖",code:"1"},{level: "五等奖",name: "现金红包",code:"6"},{level: "谢谢参与",name: "谢谢参与",code:"00"},{level: "四等奖",name: "礼盒",code:"5"},{level: "三等奖",name: "推车",code:"4"},{level: "二等奖",name: "玩具车",code:"3"},{level: "谢谢参与2",name: "谢谢参与2",code:"22"},{level: "一等奖",name: "料理机",code:"2"}]}
}

lottery(){if (!this.endLoading) {uni.showLoading({title: '请等待加载完毕再抽奖呦!'});setTimeout(function() {uni.hideLoading();}, 2000);return false;}// 调用接口,接口返回参数res//1this.award = res.code;this.prize_image = '../static/turnPlate/prizes/'+res.code+'.png';//2//this.award = res.code;//this.prizeName = res.name; //this.prize_image = res.image;for (let i = 0; i < this.levelsArr.length; i++) {if (this.award == this.levelsArr[i].code) {this.awardIndex = i;// 不能点按钮this.endLoading = false;this.play(i);}}	}
async play(d) {//设置抽奖结果,可用数据传入代替console.log(d)//转盘归零this.deg = 0;await this.sleep(300)var angle = this.arr[d]//转动动画  分三部分 前中后 前后速度慢 中间快for (var i = 0; i < 1080 + angle; i += 1) {if (i < 50) {this.deg += 1;await this.sleep(50 - i)} else if (i < 1030 + angle) {this.deg += 2;i += 1;await this.sleep(1)} else {this.deg += 1;await this.sleep(i - angle - 1030)}if (this.deg >= 360) {this.deg -= 360;}}//显示弹窗await this.sleep();this.endLoading = true;this.openPop();},/*制作sleep效果以满足转动特效*/
sleep(d) {return new Promise((resolve) => setTimeout(resolve, d))
},// 奖品弹窗
openPop() {this.$refs.popup.open()
},
closePop() {this.$refs.popup.close()
}

4、图片素材

 

 

 

 

 

 

 

 

 


http://www.ppmy.cn/news/284590.html

相关文章

评论区抽奖程序

文章目录 评论区抽奖程序1. 思路2. 准备3. 实现爬虫爬取数据4. 随机数模块抽取5. main函数6. 大功告成 评论区抽奖程序 这个小程序很简陋&#xff0c;没什么难度 1. 思路 使用爬虫爬取评论区数据随机抽取一名幸运用户 思路很简单&#xff0c;实现也很简单 2. 准备 新建一个…

CSP 复赛爆零指南

目录 写在前面的话爆零原因诊断1.文件夹建立错误2.没有加文件读写3.文件夹命名不规范3.头文件错误4.注释5.空间限制6.测试环境不同 尾声 写在前面的话 感谢Mars-OJ勰码教育提供的数据和图片 CSP爆零大家应该都不陌生 当然啦&#xff0c;没人想爆零 以下是两场CSP模拟的爆零统计…

CSP——收集卡牌

题目描述 小林在玩一个抽卡游戏&#xff0c;其中有 n 种不同的卡牌&#xff0c;编号为 1 到 n。每一次抽卡&#xff0c;她获得第 i 种卡牌的概率为 pi。如果这张卡牌之前已经获得过了&#xff0c;就会转化为一枚硬币。可以用 k 枚硬币交换一张没有获得过的卡。 小林会一直抽卡…

白嫖steam游戏,我是专业的

做自己喜欢的爬虫&#xff1a;steam白嫖 闲的无聊做了一期steam白嫖的文章。 有了它&#xff0c;以后就再也不会担心游戏没有白嫖到了。 steam近期免费&#xff1a;https://steamdb.info/upcoming/free/ 特地做出来个exe可执行文件给大家用&#xff0c;免得电脑没有python的人…

CSOL 2014 搭建 架设教程 阿里云 腾讯轻量云等通用

第一步、下载CSOL 2014 公开端 链接&#xff1a;https://pan.baidu.com/s/1MCMoSAP_8-neSoDfIMrQbg?pwdmmsy 提取码&#xff1a;mmsy 下载完毕后解压资源文件 并安装VC运行库 将所有资源文件 放本地一份 放服务器一份 第二步、服务器开放游戏所需端口 1.TCP 30001 2.UDP…

csol永恒python评测_反恐精英Online情报中心 - CSOL - 官方网站 - 世纪天成游戏 - 火爆战场真实体验!...

2秒自动充能超强神器&#xff1f;“撼宇碎星”闪耀登场&#xff01; 2018年01月24日 分享到&#xff1a; 腾讯微博 新浪微博 qq空间要说独创性与实用性并存&#xff0c;兼具一年仅出一把的稀有性&#xff0c;《反恐精英Online》中的“年度神器”不失为最佳代表。而在1月24日&am…

csol控制台+去黑雾

去黑雾控制台指令&#xff0c;上游戏后呼出控制台&#xff0c;输入brightness 1000&#xff0c;然后敲回车。进入一个房间后点我的信息&#xff0c;点密码箱按呼出控制台&#xff0c;输入brightness 1000敲回车。 在游戏中按“&#xff5e;”打开控制台&#xff0c;输入命令即…

CSOL控制台与FPS优化命令大全

下面的控制台命令会让你游戏FPS达到不可思议的地步! 在CSOL图标找到属性&#xff0c;然后再快捷方式找到目标&#xff0c;在目标后面加“ -CONSOLE”。-的前面必须加一个空格&#xff0c;不然起不到优化效果。 改变CS游戏中的帧数&#xff0c;也就是说游戏里面的“FPS”&…