微信小程序转盘抽奖的实现方法
更新时间:2022年7月27日 23:43 点击:517 作者:羽筠
本文实例为大家分享了微信小程序实现转盘抽奖的具体代码,供大家参考,具体内容如下
lucky-draw.wxss:
.lucky_draw_zp{ width: 502rpx; height: 502rpx; margin: 0 auto; position: relative;} .lucky_draw_zp_img , .lucky_draw_zp_btn{ width: 100%; height: 100%; position: absolute; left: 0; top: 0;}
lucky-draw.wxml:
<view class="lucky_draw_zp" bindtap="getLucky"> <image style="{{zpRotateDeg}}" class="lucky_draw_zp_img" src="{{zpData.zpImg}}" mode="aspectFit"></image> <image class="lucky_draw_zp_btn" src="../../../images/zp_btn.png" mode="aspectFit"></image> </view>
lucky-draw.js:
Page({ /** * 页面的初始数据 */ data: { zpData:{ //转盘主图图片url zpImg:'../../../images/zp.png', equalParts:null, //一共多少等份 oneAngle:null, //每一等份多少度 // ******** 转盘奖品数据:后台获取数据 ******** //注:根据转盘图片对应的值(转盘图片指针处顺时针向右数,起始1,奖品对应的格子数【第几等份上】) awardSetting:[ '第1个格子对应内容', '第2个格子对应内容', '第3个格子对应内容', '第4个格子对应内容', '第5个格子对应内容', '第6个格子对应内容', ], }, ifRoate:false, //转盘是否在转动(判断阻止多次点击) zpRotateDeg:'', //旋转角度 // ******** 抽奖结果数据:后台获取数据 ******** curKey:null, //抽奖结果 : 取值范围 1 至 总格子数 ifWinning:null, //是否中奖 }, // 获取转盘初始数据 getZpData(){ let zpImg = 'zpData.zpImg'; let awardSetting = 'zpData.awardSetting'; this.setData({ [zpImg]:'../../../images/zp.png', [awardSetting]:[ '1', '2', '3', '4', '5', '6', ], }); this.setZpDefault(); }, // 根据转盘初始数据设置转盘初始关键参数 setZpDefault(){ let equalPartsNum = this.data.zpData.awardSetting.length; let oneAngleNum = 360 / equalPartsNum; let equalParts = 'zpData.equalParts'; let oneAngle = 'zpData.oneAngle'; this.setData({ //一共多少等份 [equalParts] : equalPartsNum, // 根据转盘得等份数设置 每一等份多少度 [oneAngle] : oneAngleNum, }); }, // 设置旋转动效 setToRotate(degNum){ this.setData({ zpRotateDeg : '-webkit-transform: rotate(' + degNum + 'deg);transform: rotate(' + degNum + 'deg);-webkit-transition: all 5s ease;transition: all 5s ease;', }); }, //根据 设置的 指针停止时指向的格子(中奖结果),设置其旋转角度区间 setRotate(awardSettingNumber){ //awardSettingNumber 取值范围 1 至 总格子数 setTimeout(() => { //转盘停止时 指针 指向的格子 最小角度 let minAngle = 360 - awardSettingNumber * this.data.zpData.oneAngle + 5; //转盘停止时 指针 指向的格子 最大角度 let maxAngle = 360 - (awardSettingNumber - 1) * this.data.zpData.oneAngle - 5; //旋转区间 let newAngle = Math.floor(minAngle + Math.random() * (maxAngle - minAngle)) + 360 * 15; this.setToRotate(newAngle); setTimeout(() => { this.roateEnd(awardSettingNumber); }, 5150); },50); }, //旋转结束执行 roateEnd(awardSettingNumber){ console.log('当前指向格子数 -- ' + awardSettingNumber , this.data.curKey); console.log('当前指向格子数对应内容 -- ' + this.data.zpData.awardSetting[awardSettingNumber - 1] , this.data.zpData.awardSetting[this.data.curKey - 1]); // 是否中奖 if(this.data.ifWinning){ console.log('中奖'); }else{ console.log('未中奖'); } setTimeout(() => { this.setData({ ifRoate : false, //转盘是否在转动 }); }, 100); }, //点击抽奖 getLucky(){ if(this.data.ifRoate){ return false; } this.setData({ ifRoate : true, //转盘是否在转动 zpRotateDeg : '' }); // 请求后台获取抽奖结果中... /*test*/ var res = { status:1, curKey:Math.floor(1 + Math.random() * this.data.zpData.equalParts), //抽奖结果 : 取值范围 1 至 总格子数 ifWinning:true, //是否中奖 info:'没机会或什么什么' } /*test*/ / if(res.status == 1){ this.setData({ curKey : res.curKey, ifWinning : res.ifWinning }); this.setRotate(this.data.curKey); }else{ this.setData({ ifRoate : false, //转盘是否在转动 }); wx.showModal({ title: '温馨提示', showCancel:false, content: res.info, }) } / }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady: function () { }, /** * 生命周期函数--监听页面显示 */ onShow: function () { this.getZpData(); }, /** * 生命周期函数--监听页面隐藏 */ onHide: function () { }, /** * 生命周期函数--监听页面卸载 */ onUnload: function () { }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh: function () { }, /** * 页面上拉触底事件的处理函数 */ onReachBottom: function () { }, /** * 用户点击右上角分享 */ onShareAppMessage: function () { } })
图片资源:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持猪先飞。
原文出处:https://blog.csdn.net/qq_16494241/article/details/107666020
相关文章
- 这篇文章主要介绍了微信小程序 页面传值详解的相关资料,需要的朋友可以参考下...2017-03-13
- 这篇文章主要介绍了js组件SlotMachine实现图片切换效果制作抽奖系统的相关资料,需要的朋友可以参考下...2016-04-19
- 这篇文章主要介绍了微信小程序 网络请求(GET请求)详解的相关资料,需要的朋友可以参考下...2016-11-22
- 这篇文章主要给大家介绍了关于微信小程序如何获取图片宽度与高度的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-10
- 这篇文章主要介绍了微信小程序 二维码生成工具 weapp-qrcode详解,教大家如何在项目中引入weapp-qrcode.js文件,通过实例代码给大家介绍的非常详细,需要的朋友可以参考下...2021-10-23
- 这篇文章主要为大家详细介绍了微信小程序自定义tabbar组件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-03-14
- 这篇文章主要介绍了微信小程序手势操作之单触摸点与多触摸点的相关资料,需要的朋友可以参考下...2017-03-13
- 这篇文章主要介绍了微信小程序(应用号)开发新闻客户端实例的相关资料,需要的朋友可以参考下...2016-10-25
- 这篇文章主要为大家详细介绍了微信小程序实现canvas分享朋友圈海报,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-21
- 这篇文章主要介绍了微信小程序 页面跳转传递值几种方法详解的相关资料,需要的朋友可以参考下...2017-01-16
- 这篇文章主要为大家详细介绍了微信小程序实现选择地址省市区三级联动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-21
- 这篇文章主要为大家详细介绍了微信小程序实现点击导航条切换页面,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-11-19
- 这篇文章主要介绍了uniapp,微信小程序中使用 MQTT的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-07-11
- 这篇文章主要介绍了微信小程序自定义底部弹出框动画,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-11-16
- 这篇文章主要介绍了微信小程序 通过控制CSS实现view隐藏与显示的相关资料,需要的朋友可以参考下...2017-05-27
- 这篇文章主要介绍了微信小程序 富文本转文本实例详解的相关资料,需要的朋友可以参考下...2016-10-25
- 这篇文章主要为大家详细介绍了微信小程序入门之绘制时钟,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-10-23
- 相信大家现在都知道微信小程序吧,下面这篇文章主要给大家介绍了微信小程序开发之map地图的相关资料,分享出来供大家参考学习,文中通过示例代码介绍的非常详细,需要的朋友们下面跟着小编来一起学习学习吧。...2017-06-15
- 这篇文章主要介绍了微信小程序 PHP后端form表单提交实例详解的相关资料,需要的朋友可以参考下...2017-01-16
- 微信小程序目前的火热程度相信不用多言,最近利用空余时间用小程序实现了个动态的登录页效果,所以下面这篇文章主要给大家介绍了利用微信小程序实现登录页云层漂浮动画效果的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。...2017-05-09