微信小程序圆盘抽奖(扇形画圆)
微信小程序圆盘抽奖(扇形画圆)
前言
提示:这里可以添加本文要记录的大概内容:
例如:领导安排做一个微信小程序的转盘抽奖,要求可以复用,动态的修改抽奖的板块个数,由于是第一次做微信小程序踩了很多的坑,在网上也没有找到同类型的文章,所以在此记录一下。
这两天尝试了各种方法,首先是使用canvas设置路径来绘制扇形直到完成一个圆,但是微信小程序的canvas不兼容使用transform的属性,无法进行旋转,不过原生的可以使用这个思路,这里分享一个使用canvas画分割画圆的文章,作者写得非常好https://blog.csdn.net/qq_44797965/article/details/104330823
提示:以下是本篇文章正文内容,下面案例可供参考
先上效果
正文
先说一下实现的思路,因为需要动态的设置扇形的块数所以这里使用了动态的css来绘制转盘,再加上微信小程序的animation使得转盘转动。
上代码:wxml
<view class="pie" animation="{{animation}}"><view class="slice" wx:for="{{sum}}" wx:key="index" style="{{styless[index]}} "></view>
</view><button type="primary" bindtap="luckDraw" style="margin-bottom:10px;">点击抽奖
</button>
js
/*** 页面的初始数据*/Page({data: {degNumber:0,animation:'',sum:10styless:[],contents:'',},recove:function(){this.animation2.rotate(0).step()this.setData({animation:this.animation2.export(),})},onReady: function () {/*获取随机颜色*/var degs=360/this.data.sum;var degsY=(90-degs)*-1;let styless=this.data.styless;//在这里根据需要绘制的扇形数量来对偏移的角度进行计算//这里的skewY设置为0是一个圆的1/4,内角是一个90°的直角for(var i=0;i<this.data.sum;i++){styless.push( 'transform:rotate('+degs*i+'deg) skewY('+degsY+'deg);background-color:'+this.getColor())//把结果结合到样式里再放到数组中,}this.setData({styless:styless})//使用数组把样式内容存起来this.animation=wx.createAnimation(duration:4000,{//设置动画时间为4秒timingFunction:'ease-in-out',delay: 10,})this.animation2=wx.createAnimation({duration:0,//复位用的动画timingFunction:'ease-in-out',delay: 0,})},//当抽奖按钮按下时候luckDraw:function(){var that=this;var roundNumber= Math.round(3600+Math.random()*1000);//随机转动的角度,这里我先让它转10圈以上console.log(roundNumber);this.setData({degNumber:roundNumber})this.animation.rotate(this.data.degNumber).step()this.setData({animation: this.animation.export(),})setTimeout(() => {//这里通过计时器来进行弹框提示,转动的动画时间为4秒,这里的提示框设置为4.5秒在转动完后弹出提示框提示用户console.log("1"+this.data.ces);wx.showModal({title: '抽奖信息',content: that.data.contents,//提示的信息success: function (res) {if(res.cancel){that.recove();//进行转盘的复位}else{that.recove();//进行转盘的复位}}})}, 4500);},recove:function(){//让圆盘复位this.animation2.rotate(0).step()this.setData({animation:this.animation2.export(),})},//随机获取一种颜色getColor(){var r = Math.floor(Math.random() * 256);var g = Math.floor(Math.random() * 256);var b = Math.floor(Math.random() * 256);return 'rgb(' + r + ',' + g + ',' + b + ')';},})
wxss:
.pie{//这里画一个圆position: relative;margin: 1em auto;padding: 0;width: 300px;height: 300px;border-radius: 50%;list-style: none;overflow: hidden;
}
.slice {//这里让所有的扇形块都绝对定位overflow: hidden;position: absolute;top: 0;right: 0;width: 50%;height: 50%;transform-origin: 0% 100%;}
这里并没有对抽奖的结果进行判断,因为抽奖的结果是后端接口拿到的,所以这里并没有进行判断,这里提供一下判断的思路,当后端返回了中奖结果后,使转盘转动到随机圈数+对应扇形的角度区间即可。至于抽奖指针,因为下班了就没有做。
总结
微信小程序的东西缺太多了真不好用。
微信小程序圆盘抽奖(扇形画圆)相关推荐
- canvas画条形图 微信小程序_小程序-引入 echart 图表画圆饼图
前言 在 web 中引入echart可视化图表是很常见的操作,那在小程序当中又如何引入使用呢 示例效果 完整示例效果-可以点击此处查看 下载使用 ec-canvas 在github上下载echarts ...
- IVX低代码平台开发——微信小程序实现抽奖功能
写在前面 通过利用可视化编程实现微信小程序的抽奖功能,带大家初步了解 iVX 的强大之处. 文章目录 写在前面 iVX开发 抽奖功能实现 iVX开发 基本介绍 iVX是一个 "零代码&quo ...
- 微信小程序-转盘抽奖
微信小程序-转盘抽奖代码: lucky-draw.wxss: .lucky_draw_zp{ width: 502rpx; height: 502rpx; margin: 0 auto; positi ...
- 微信小程序的抽奖页面
微信小程序的抽奖页面 做一个1-10的微信小程序抽奖界面,随机到6和8会显示中奖信息! 点开始按钮开始执行,点结束按钮结束抽奖并且判断是否中奖 wxml代码: <view>{{title} ...
- 【小程序与公众号】微信小程序九宫格抽奖(抽奖完全随机)
上图 话不多说直接上图,抽奖是顺时针又快变慢(还原抽奖的动画)进行抽奖,抽奖的几率都是随机 源码 接下来展示的就是微信小程序中的九宫格抽奖 说明 适用范围 抽奖逻辑只是原生JS,通过数据进行驱动,因此 ...
- 微信小程序——翻牌抽奖功能
目录 前言 一.效果展示 二.主要代码 1.wxml主要代码: 2.wxss主要代码 3.js主要代码 4.app.js主要代码 三.实现思路及注意点 1.洗牌功能实现方法 2.翻牌功能实现方式 3. ...
- 京麦微信小程序圣诞抽奖项目的架构设计
来源: linkedkeeper.com 作者:肖依云,热爱技术,熟悉Struts2.Spring.Spring MVC等常用开源框架,对开发分布式.高并发系统有一定的学习和研究.正在学习大数据和AI ...
- 京麦微信小程序圣诞抽奖项目总结
肖依云,2017年加入京东,目前就职于京东商城京麦平台组,从事京东商家开放平台的相关开发工作. 该项目的主要功能特点是类似于一个秒杀系统,存在短时间高并发问题,在拿到项目需求后,我们对该项目进行了两版 ...
- 微信小程序——转盘抽奖
如题,该小程序为一款利用canvas实现的转盘抽奖效果,今天我就来总结一下转盘旋转具体实现原理,首先还是上图上代码(一下代码为转盘部分代码,想要查看完整代码,请移步支我的github,飞机票,点击跳转 ...
最新文章
- Python的线性查找(作业)
- 使用数据库的压测工具super-smack测试mysql数据库性能
- 打印完全二叉树java_java 完全二叉树的构建与四种遍历方法示例
- 【2016年第6期】数据产品在线定制平台的探索实践
- JDDroppableView
- User-mode Linux (简体中文)
- Maven系列一pom.xml 配置详解
- STOA-diary-20110312-抉择
- MySQL-删除表(drop、truncate、delete)区别
- flutter 加载gif图片
- 超标量处理器设计 姚永斌 第10章 指令提交 摘录
- Eclipse最新SVN(4.2.x )插件subclipse安装方法
- InnoDB行记录格式
- 平方项知多少?平方项、分组回归与门槛模型
- Spring Boot + Thymeleaf + Echarts 三维地图展示
- 简一论币:8.14 晚间BTC行情分析及操作建议
- [HNOI2007] 紧急疏散EVACUATE
- win10照片文件夹里面图片,突然不显示缩略图
- 读杨绛先生的《我们仨》部分片段
- 创建利于Google网站的步骤
热门文章
- SpringBoot实现邮箱验证码
- 使用hutool导入excel
- 树莓派系统汉化教程(汉语+中文字体库+中文输入法pinyin(拼音))
- 《Photoshop图像合成专业技法(修订版)》—第1章1.4节精修头发
- 【计算机毕业设计】共享充电宝管理系统
- 手机虚拟服务器消耗大量流量,周朝阳最实测网站流量消耗:资讯站是博客的6倍...
- wordpress 积分插件
- 函数周期表丨时间丨值丨WEEKDAYWEEKNUM
- Java往文件里写入字符串_Java将字符串写入文本文件代码示例
- 《剑指offer》刷题总结