微信小程序之转盘抽奖

1. 实现效果

转盘抽奖

2. 实现过程

话不多说,直接上代码

/**index.wxml */
<view class="title">旋转大转盘</view>
<view class="rote-box fcc"><view class="box fcc"><image class="bg" src="/static/bg.png" animation="{{animationRotate}}"/><image class="btn {{isTurnOver2?'':'grayscale'}}" src="/static/btn.png" bindtap="onRotateClick" /></view>
</view>
Page({/*** 页面的初始数据*/data: {isTurnOver2: true, //抽奖状态 是否旋转完(旋转大转盘)animationRotate: null,// 转的总圈数,最后一圈可能不满num_total: 20,},onRotateClick() {if (this.data.isTurnOver2) {this.setData({isTurnOver2: false,});//正常,奖品结果提前从后端接口拿回来,这里模拟获取随机// 随机奖品效果const rand = (m, n) => {return Math.ceil(Math.random() * (n - m + 1) + m - 1);};let prizeId = rand(1, 6);this.onRotate(prizeId);} else {showTextToast('请勿重复点击');}},onRotate(prizeId) {console.log('中奖id', prizeId);let _duration = 10000;let animationRotate = wx.createAnimation({duration: _duration,timingFunction: 'ease', //动画以低速开始,然后加快,在结束前变慢});//解决二次点击不旋转问题animationRotate.rotate(0).step({duration: 1,});let num_total = this.data.num_total;/** angle 旋转的角度* 这转盘有6个奖项,所以一个奖项的度数为:360除以6等于60、* 要转完一圈 → 60 * 6* 为了让动画看起来舒服我设置了20圈 → 60 * 6 * 20* 又因为需要连贯抽取非第一次,所以二次抽奖时会在原来的圈数上自加,* 也就成了60 * 6 * num_total,num_total每转完一次都会叠加上自身* 又因为转盘是顺时针旋转的,默认指定奖品1* 所以需要减去 → 60 * (prize_id - 1) 方可在最后一圈转到对应的位置* 可以根据自己的设计稿奖品的个数进行调整* */let angle = 60 * 6 * num_total - 60 * (prizeId - 1);animationRotate.rotate(angle).step();this.setData({animationRotate: animationRotate.export(),});setTimeout(() => {this.setData({isTurnOver2: true,num_total: num_total + num_total,});}, _duration);},
});
//index.less
.rote-box {padding-bottom: 20rpx;.box {width: 600rpx;height: 600rpx;position: relative;.bg {width: 100%;height: 100%;position: absolute;top: 0rpx;left: 0rpx;}.btn {position: absolute;top: 160rpx;width: 200rpx;height: 249rpx;}}
}.grayscale {filter: grayscale(70%);
}

3.资源获取

在这里插入图片描述
在这里插入图片描述

九宫格抽奖请移步这边

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/695590.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VTK图形算法API:vtkSphereSource,球几何数据

大家好&#xff0c;我是先锋&#xff0c;专注于AI领域和编程技术分享&#xff0c;在这里定期分享计算机编程知识&#xff0c;AI应用知识&#xff0c;职场经验&#xff1b; 本系列介绍VTK图像算法API&#xff0c;后续会介绍VTK项目实践应用&#xff0c;关注我&#xff0c;不错过…

信息量、熵、KL散度、交叉熵概念理解

信息量、熵、KL散度、交叉熵概念理解 (1) 信息量 信息量是对事件的不确定性的度量。 假设我们听到了两件事&#xff0c;分别如下&#xff1a;事件A&#xff1a;巴西队进入了世界杯决赛圈。 事件B&#xff1a;中国队进入了世界杯决赛圈。仅凭直觉来说&#xff0c;显而易见事件…

【Shell】正则表达式的操作实例

正则表达式是一个描述一组字符串的模式 是由普通字符和元字符组成的字符集&#xff0c;而这个字符集匹配&#xff08;或指定&#xff09;一个模式。 正则表达式的操作实例 &#xff08;一&#xff09;概述1.定义2.作用3.类型 &#xff08;二&#xff09;字符串匹配实例&#xf…

光伏EPC管理软件都有哪些功能和作用?

光伏EPC管理软件是用于光伏工程项目管理的综合性工具&#xff0c;它涵盖了从项目策划、设计、采购、施工到运维的各个环节。 1、项目总览 管理所有项目计划&#xff0c;包括项目类型、项目容量等。 调整和优化项目计划&#xff0c;以应对不可预见的情况。 2、施工管理 制定…

上传到 PyPI

将软件包上传到 PyPI&#xff08;Python Package Index&#xff09;&#xff0c;您需要遵循以下步骤&#xff1a; 准备软件包&#xff1a;确保您的软件包满足以下要求&#xff1a; 包含一个 setup.py 文件&#xff0c;用于描述软件包的元数据和依赖项。包含软件包的源代码和必要…

QT的创建,发现编译器有一个黄色三角形感叹号,提示说Cmake配置错误,该怎么办?

确保你安装了Cmake 2.如果你电脑之前已经装了Cmake&#xff0c;那么在qt安装中&#xff0c;即便你选择了Cmake版本&#xff0c;但依旧不会修改电脑的Cmake版本。这时候就会出现黄色箭头。在勾勾的地方会有一个黄色感叹符号&#xff08;我已经解决了&#xff0c;所以没有显示&a…

持续集成-Git

重要步骤命令 git init (初始化一个仓库) git add [文件名] (添加新的文件) git commit -m [关于本次提交的相关说明] (提交) git status (查看文件状态) git diff (如果文件改变&#xff0c;比较两个文件内容) git add[文件名] || git commit -a -m [关于本次提交的相关说…

【SpringBoot记录】从基本使用案例入手了解SpringBoot-数据访问-更改DataSource(2)

前言 通过上一个数据访问基本案例成功可以发现&#xff0c;SpringBoot在数据访问案例中也做了许多自动配置&#xff0c;上节只分析了其中的Properties。 而在自动配置包的jdbc下 还有其他配置文件。 根据名称可以大致了解他们的作用&#xff1a; DataSourceAutoConfiguration…

0509BBQ的Maven项目

0509BBQ的Maven项目包-CSDN博客 数据库字段 登录界面 点餐主页 登录完成进入点餐主页&#xff0c;显示已点餐的数据 点击点餐按钮&#xff0c;生成对应订单数据。 取消勾选点餐按钮&#xff0c;删除对应订单数据。 点击加减图片&#xff0c;实现对数量的加减 展示订单 ajax动态…

朋友在阿里测试岗当HR,给我整理的面试题文档

以下是软件测试相关的面试题及答案&#xff0c;欢迎大家参考! 1、你的测试职业发展是什么? 测试经验越多&#xff0c;测试能力越高。所以我的职业发展是需要时间积累的&#xff0c;一步步向着高级测试工程师奔去。而且我也有初步的职业规划&#xff0c;前3年积累测试经验&…

MP4视频转gif怎么做?看看这篇就会了

喜欢刷短视频的小伙伴经常会看到各种好玩有趣的片段&#xff0c;想要通过自己将这段视频制作成gif动态图片的还不想下载软件的时候要怎么办呢&#xff1f;这个很简单&#xff0c;不需要下载什么软件用专业的Gif动画制作网站&#xff0c;支持超清的画质导出&#xff0c;能够完成…

Excel 两层分类后的行转列

例题描述 Excel 文件中有下图所示的数据&#xff0c;同 Name 的物品可能有多种颜色。 现在想要把数据列出下图的形式&#xff0c;每种Type一行&#xff0c;其后依次列出每种Name及其Color。 实现方法 使用 Excel 插件 SPL XLL 在空白单元格写入公式&#xff1a; spl("…