国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

微信小程序實現多宮格抽獎活動

2019-11-19 14:57:07
字體:
來源:轉載
供稿:網友

最近閑來無事,做了一個多宮格抽獎的例子,有什么需要改進或者錯誤的地方,請留言,謝謝

首先看效果:

思路是先讓其轉動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+50  this.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 () {  }})

完結。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 集贤县| 淮滨县| 和田县| 彰武县| 西峡县| 甘肃省| 襄樊市| 甘洛县| 望奎县| 宜城市| 霍山县| 云阳县| 新闻| 共和县| 桃园县| 鲜城| 澄城县| 榆社县| 雷州市| 西城区| 上虞市| 曲靖市| 同心县| 北票市| 奉化市| 囊谦县| 城固县| 子洲县| 旌德县| 通榆县| 石家庄市| 诸城市| 东阳市| 观塘区| 拉萨市| 青岛市| 安阳市| 衡阳县| 隆安县| 赤壁市| 古田县|