微信小程序多宫格抽奖
最近闲来无事,做了一个多宫格抽奖的例子,有什么需要改进或者错误的地方,请留言,谢谢
首先看效果
思路是先让其转动2圈多,然后再进行抽奖,格子运动用的是setTimeout,让其运行的时间间隔不一样,然后产生运动快慢的效果
好了,上代码
首先是WXML(这里面的判断可能有些绕,仔细按顺序看,因其第五个和第十一个格子在不同手机屏幕大小上的显示有问题,所以再次给它们判断了一下)
<view class="box"><view class="boxsub {{luckynum==index?'luck':''}}" wx:for='{{box}}' style="{{index>0&&index<4?'top:0;left:'+index*140+'rpx;':(index>3&&index<8?'right:0;top:'+((index-4)*100)+'rpx;':(index>7&&index<12?'bottom:0;right:'+(index-7)*140+'rpx;':(index>11&&index<14?'left:0;bottom:'+(index-11)*100+'rpx;':'')))}} {{index=='4'?'top:0;':''}} {{index=='11'?'left:0;':''}} " wx:key=''><text class='boxcontent' style='{{item.name.length>6?"line-height:40rpx;margin-top:10rpx;":"line-height:100rpx;"}}'>{{item.name}}</text> </view><view class="lucky" catchtap="luckyTap"><text class="taplucky">点击抽奖</text><text class="howMany">您还有<text class="howMany_num" >{{howManyNum}}</text>次抽奖机会</text></view> </view> <view class="explain"></view>
WXSS:
.box{margin:20rpx 25rpx;height: 400rpx;width: 698rpx;/*border:1px solid #ddd;*/position: relative;/*box-sizing: border-box;*/ } .boxsub{width: 140rpx;height: 100rpx;/*border: 1px solid #f00;*/box-sizing: border-box;position: absolute;background: #ff6100;border: 1rpx solid #fff;} .boxcontent{text-align: center;font-size: 26rpx;display: block;color: #fff; } .lucky{width: 300rpx;height:130rpx;background:#ff6100;/* #ff6100;007FFF*/position: absolute;left: 0;bottom: 0;right: 0;top: 0rpx;margin: auto; }.lucky:active{opacity: 0.7; } .taplucky{display: block;text-align: center;font-size: 30rpx;line-height: 50rpx;height: 50rpx;color: #fff;margin-top: 20rpx; } .howMany{display: block;text-align: center;font-size: 26rpx;color: #fff;line-height: 40rpx;height: 40rpx; } .howMany_num{color:#007FFF;font-size:32rpx;line-height:40rpx;padding:0 10rpx; } .luck{opacity: 0.5;background: #ff6100; }
JS
var time = null;//setTimeout的ID,用clearTimeout清除 Page({data: {box: [{name:'100积分'}, {name: '10元优惠券\n满100可用'}, {name: '60积分'}, {name: '30积分'}, {name: '50积分'}, {name: '30元优惠券\n满120可用'}, {name: '100积分'}, {name: '200积分'}, {name: '10积分'}, {name: '50积分'}, {name: '40积分'}, {name: '50优惠券满500可用'}, {name: '60积分'}, {name: '70积分'}],luckynum:0,//当前运动到的位置,在界面渲染howManyNum:10,//抽奖的剩余次数 content:{index: 0, //当前转动到哪个位置,起点位置count: 0, //总共有多少个位置speed: 50, //初始转动速度cycle: 3*14, //转动基本次数:即至少需要转动多少次再进入抽奖环节,这里设置的是转动三次后进入抽奖环节 },prize:0,//中奖的位置luckytapif:true//判断现在是否可以点击 },//点击抽奖luckyTap:function(){var i=0,that=this,howManyNum = this.data.howManyNum,//剩余的抽奖次数luckytapif = this.data.luckytapif,//获取现在处于的状态luckynum = this.data.luckynum,//当前所在的格子prize =Math.floor(Math.random()*14) ;//中奖序号,随机生成if (luckytapif && howManyNum>0){//当没有处于抽奖状态且剩余的抽奖次数大于零,则可以进行抽奖console.log('prize:'+prize);this.data.content.count=this.data.box.length;this.setData({howManyNum:howManyNum-1//更新抽奖次数 });this.data.luckytapif=false;//设置为抽奖状态this.data.prize = prize;//中奖的序号this.roll();//运行抽奖函数} else if (howManyNum == 0 && luckytapif){wx.showModal({title: '',content: '您的抽奖次数已经没有了',showCancel:false})}}, //抽奖roll:function(){var content=this.data.content,prize = this.data.prize,//中奖序号that=this;if (content.cycle - (content.count-prize)>0){//最后一轮的时间进行抽奖content.index++;content.cycle--;this.setData({luckynum: content.index%14 //当前应该反映在界面上的位置 });setTimeout(this.roll, content.speed);//继续运行抽奖函数}else{if (content.index < (content.count*3 + prize)){//判断是否停止 content.index++; content.speed += (550 /14);//最后一轮的速度,匀加速,最后停下时的速度为550+50this.data.content=content;this.setData({luckynum: content.index % 14});console.log(content.index, content.speed);//打印当前的步数和当前的速度setTimeout(this.roll,content.speed);}else{//完成抽奖,初始化数据console.log('完成');content.index =0;content.cycle = 3 * 14;content.speed = 50;this.data.luckytapif = true;clearTimeout(time);wx.showModal({title: '',content: '恭喜你抽到了'+that.data.box[prize].name,showCancel:false})}}},onLoad: function (options) {},onReady: function () {},onShow: function () {},onHide: function () {},onUnload: function () {} })
完结。
想了解更多的小程序的知识请添加微信小程序开发交流群:368506119
转载于:https://www.cnblogs.com/xjwy/p/7215989.html
微信小程序多宫格抽奖相关推荐
- 微信小程序六宫格抽奖
用微信小程序做一个抽奖活动 一轮是6个红包,需要在第三轮听下转动,初始一个随机数在13-18之间随机来进行抽奖 //页面的渲染 <view class="container" ...
- [微信小程序专题] 宫格导航设计
欢迎点击「算法与编程之美」↑关注我们! 本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章. 问题 在很多APP软件,都会设置宫格导航,那么是如何设计的呢? ...
- 微信小程序 9宫格翻牌动画
9宫格翻牌需求: 1.进来时平铺9个格子显示 2.点击开始抽奖时洗牌动作 3.洗完牌后呈现9个都是未翻牌的状态 4.点击任意一个牌子,有翻转的动作 5.翻转结束后出现中奖的弹窗 555,当时真的一点一 ...
- vue 图片宫格_微信小程序多宫格/九宫格抽奖 基于vue来写
/*整体布局采用定位实现 gameBox:父盒子,最外层背景图 bg1:灰色灯 bg2:点击开始按钮后,白色灯出现,同时要每个500s同bg1做切换隐藏显示 start:按钮样式 item1-8:通过 ...
- 微信小程序实现大转盘抽奖----踩坑之路
微信小程序实现大转盘抽奖----踩坑之路 需求:现在有一个小程序抽奖页面如下,此类抽奖方式为大转盘 思路:由服务端获取抽奖次数和奖品,根据服务端的中奖概率来决定是否中奖,最后利用小程序动画将转盘转起来 ...
- 微信小程序制作一个老虎机抽奖动画
可以把随机数换成后端传递的数据控制抽奖结果 效果图: 动图有点卡- wxml <view class="content relative"><view class ...
- 微信小程序实现单元格编辑功能,并支持计算合计
最近有个客户想做下单系统,要求像电脑端一样 ,实现在多维的录入功能,客户主要是人事鞋批发的,要求颜色.尺码对应订购数量,可以计算横向和纵向合计,话不多说,直接上代码. 效果如下: 如上图,除了第一行和 ...
- 微信小程序合并单元格
https://blog.csdn.net/weixin_34355715/article/details/87962188
- 如何实现消息功能_如何实现微信小程序的轮盘抽奖功能
为了吸引用户,商家会做一些活动,利用赠送或充值的积分来进行抽奖,现在来讲下微信小程序如果实现轮盘抽奖的功能,先看下图: 上面展示的就是轮盘抽奖,一共有六个奖项,其中一个是"不中奖" ...
最新文章
- Manning大神牵头,斯坦福开源Python版NLP库Stanza:涵盖66种语言
- 计算机丢失faultrep.dll,faultrep.dll是什么文件?
- 无法完成安装:'unsupported configuration: hda-duplex not supported in this QEMU binary'
- 不重启JVM,替换掉已经加载的类,偷天换日?
- python是什么公司开发的软件-软件开发|什么是行为驱动的 Python?
- 基于Boost::beast模块的快速WebSocket服务器
- 【原】a.class与a .class的区别
- 用javascript写Android和iOS naitve应用,实在炫酷。
- mysql新建用户并授权_Mysql中新建用户及授权的方法分享
- 并查集(2)-按秩合并和路径压缩
- Django:数据进行md5加密
- wordpress怎么修改地址栏小图标
- sql语句多条件查询语句拼接
- matlab相对误差均值计算公式,相对误差怎么算_平均相对误差怎么计算公式
- android x86触屏驱动下载,农步祥作品 - 使用台式机和触摸屏玩Android X86 [Soomal]
- Windows xp IIS 信息服务组件安装包
- 深度诗歌阅读:你永远是个孩子
- Android到底凉不凉?34岁Android程序员用自己的故事告诉你
- StatusBar用法
- pip install psycopg2报错