微信小程序圆盘抽奖(扇形画圆)

前言

提示:这里可以添加本文要记录的大概内容:

例如:领导安排做一个微信小程序的转盘抽奖,要求可以复用,动态的修改抽奖的板块个数,由于是第一次做微信小程序踩了很多的坑,在网上也没有找到同类型的文章,所以在此记录一下。
这两天尝试了各种方法,首先是使用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%;}

这里并没有对抽奖的结果进行判断,因为抽奖的结果是后端接口拿到的,所以这里并没有进行判断,这里提供一下判断的思路,当后端返回了中奖结果后,使转盘转动到随机圈数+对应扇形的角度区间即可。至于抽奖指针,因为下班了就没有做。

总结

微信小程序的东西缺太多了真不好用。

微信小程序圆盘抽奖(扇形画圆)相关推荐

  1. canvas画条形图 微信小程序_小程序-引入 echart 图表画圆饼图

    前言 在 web 中引入echart可视化图表是很常见的操作,那在小程序当中又如何引入使用呢 示例效果 完整示例效果-可以点击此处查看 下载使用 ec-canvas 在github上下载echarts ...

  2. IVX低代码平台开发——微信小程序实现抽奖功能

    写在前面 通过利用可视化编程实现微信小程序的抽奖功能,带大家初步了解 iVX 的强大之处. 文章目录 写在前面 iVX开发 抽奖功能实现 iVX开发 基本介绍 iVX是一个 "零代码&quo ...

  3. 微信小程序-转盘抽奖

    微信小程序-转盘抽奖代码: lucky-draw.wxss: .lucky_draw_zp{ width: 502rpx; height: 502rpx; margin: 0 auto; positi ...

  4. 微信小程序的抽奖页面

    微信小程序的抽奖页面 做一个1-10的微信小程序抽奖界面,随机到6和8会显示中奖信息! 点开始按钮开始执行,点结束按钮结束抽奖并且判断是否中奖 wxml代码: <view>{{title} ...

  5. 【小程序与公众号】微信小程序九宫格抽奖(抽奖完全随机)

    上图 话不多说直接上图,抽奖是顺时针又快变慢(还原抽奖的动画)进行抽奖,抽奖的几率都是随机 源码 接下来展示的就是微信小程序中的九宫格抽奖 说明 适用范围 抽奖逻辑只是原生JS,通过数据进行驱动,因此 ...

  6. 微信小程序——翻牌抽奖功能

    目录 前言 一.效果展示 二.主要代码 1.wxml主要代码: 2.wxss主要代码 3.js主要代码 4.app.js主要代码 三.实现思路及注意点 1.洗牌功能实现方法 2.翻牌功能实现方式 3. ...

  7. 京麦微信小程序圣诞抽奖项目的架构设计

    来源: linkedkeeper.com 作者:肖依云,热爱技术,熟悉Struts2.Spring.Spring MVC等常用开源框架,对开发分布式.高并发系统有一定的学习和研究.正在学习大数据和AI ...

  8. 京麦微信小程序圣诞抽奖项目总结

    肖依云,2017年加入京东,目前就职于京东商城京麦平台组,从事京东商家开放平台的相关开发工作. 该项目的主要功能特点是类似于一个秒杀系统,存在短时间高并发问题,在拿到项目需求后,我们对该项目进行了两版 ...

  9. 微信小程序——转盘抽奖

    如题,该小程序为一款利用canvas实现的转盘抽奖效果,今天我就来总结一下转盘旋转具体实现原理,首先还是上图上代码(一下代码为转盘部分代码,想要查看完整代码,请移步支我的github,飞机票,点击跳转 ...

最新文章

  1. Python的线性查找(作业)
  2. 使用数据库的压测工具super-smack测试mysql数据库性能
  3. 打印完全二叉树java_java 完全二叉树的构建与四种遍历方法示例
  4. 【2016年第6期】数据产品在线定制平台的探索实践
  5. JDDroppableView
  6. User-mode Linux (简体中文)
  7. Maven系列一pom.xml 配置详解
  8. STOA-diary-20110312-抉择
  9. MySQL-删除表(drop、truncate、delete)区别
  10. flutter 加载gif图片
  11. 超标量处理器设计 姚永斌 第10章 指令提交 摘录
  12. Eclipse最新SVN(4.2.x )插件subclipse安装方法
  13. InnoDB行记录格式
  14. 平方项知多少?平方项、分组回归与门槛模型
  15. Spring Boot + Thymeleaf + Echarts 三维地图展示
  16. 简一论币:8.14 晚间BTC行情分析及操作建议
  17. [HNOI2007] 紧急疏散EVACUATE
  18. win10照片文件夹里面图片,突然不显示缩略图
  19. 读杨绛先生的《我们仨》部分片段
  20. 创建利于Google网站的步骤

热门文章

  1. SpringBoot实现邮箱验证码
  2. 使用hutool导入excel
  3. 树莓派系统汉化教程(汉语+中文字体库+中文输入法pinyin(拼音))
  4. 《Photoshop图像合成专业技法(修订版)》—第1章1.4节精修头发
  5. 【计算机毕业设计】共享充电宝管理系统
  6. 手机虚拟服务器消耗大量流量,周朝阳最实测网站流量消耗:资讯站是博客的6倍...
  7. wordpress 积分插件
  8. 函数周期表丨时间丨值丨WEEKDAYWEEKNUM
  9. Java往文件里写入字符串_Java将字符串写入文本文件代码示例
  10. 《剑指offer》刷题总结