微信小程序开发之大转盘 仿天猫超市抽奖

微信小程序大转盘完整代码 微信小程序大转盘完整代码。 阅读详情

天猫超市翻牌的转盘经常用,以前做Android,没啥想法,现在尝试微信小程序,看到别人家APP里有啥好玩的,就想去做一个. 
上GIF看效果: 
大转盘

简要的说一下.

1.外面一圈闪烁的小球是用js控制的样式.500ms改变一次样式.简单粗暴;
2.抽奖的item也是js控制背景,但是怎么样让它优雅的停下来是个问题.动画中有timingFunction可以设置速度.自己用js就没那么简单了.我这里用setInterval(),时间是线性变化的.换个斜率先小后大的函数效果应该会好一些.

优快云微信小程序开发专栏,欢迎关注! 
技术相关: 
1.微信小程序之仿微信漂流瓶 
2.微信小程序开发之视频播放器 Video 弹幕 弹幕颜色自定义 
3.微信小程序开发之录音机 音频播放 动画 (真机可用) 
4.微信小程序开发之麦克风动画 帧动画 放大 淡出

注释写了一些,凑合这看吧.有不对的地方, 
欢迎批评! 
上代码: 
1.index.wxml

<view class="container-out">
  <view class="circle" wx:for="{{circleList}}" style="top:{{item.topCircle}}rpx;left:{{item.leftCircle}}rpx;background-color: {{(index%2==0)?colorCircleFirst:colorCircleSecond}};"></view>
  <view class="container-in">
    <view class="content-out" wx:for="{{awardList}}" style="top:{{item.topAward}}rpx;left:{{item.leftAward}}rpx;background-color: {{(index==indexSelect)?colorAwardSelect:colorAwardDefault}};">
      <image class="award-image" src="{{item.imageAward}}"></image>
    </view>
    <view class="start-btn" bindtap="startGame" style=" background-color:{{isRunning?'#e7930a':'#ffe400'}}">START</view>
  </view>
</view>
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

2.index.wxss

.container-out {
  height: 600rpx;
  width: 650rpx;
  background-color: #b136b9;
  margin: 100rpx auto;
  border-radius: 40rpx;
  box-shadow: 0 10px 0 #871a8e;
  position: relative;
}

.container-in {
  width: 580rpx;
  height: 530rpx;
  background-color: #871a8e;
  border-radius: 40rpx;
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  margin: auto;
}

/**小圆球
box-shadow: inset 3px 3px 3px #fff2af;*/

.circle {
  position: absolute;
  display: block;
  border-radius: 50%;
  height: 20rpx;
  width: 20rpx;
}

.content-out {
  position: absolute;
  height: 150rpx;
  width: 166.6666rpx;
  background-color: #f5f0fc;
  border-radius: 15rpx;
  box-shadow: 0 5px 0 #d87fde;
}

/**居中 加粗*/

.start-btn {
  position: absolute;
  margin: auto;
  top: 0;
  left: 0;
  bottom: 0;
  right: 0;
  border-radius: 15rpx;
  height: 150rpx;
  width: 166.6666rpx;
  background-color: #ffe400;
  box-shadow: 0 5px 0 #e7930a;
  color: #f6251e;
  text-align: center;
  font-size: 55rpx;
  font-weight: bolder;
  line-height: 150rpx;
}

.award-image {
  position: absolute;
  margin: auto;
  top: 0;
  left: 0;
  bottom: 0;
  right: 0;
  height: 140rpx;
  width: 130rpx;
}

 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75

3.index.js

Page({
  data: {
    circleList: [],//圆点数组
    awardList: [],//奖品数组
    colorCircleFirst: '#FFDF2F',//圆点颜色1
    colorCircleSecond: '#FE4D32',//圆点颜色2
    colorAwardDefault: '#F5F0FC',//奖品默认颜色
    colorAwardSelect: '#ffe400',//奖品选中颜色
    indexSelect: 0,//被选中的奖品index
    isRunning: false,//是否正在抽奖
    imageAward: [
      '../../images/1.jpg',
      '../../images/2.jpg',
      '../../images/3.jpg',
      '../../images/4.jpg',
      '../../images/5.jpg',
      '../../images/6.jpg',
      '../../images/7.jpg',
      '../../images/8.jpg',
    ],//奖品图片数组
  },

  onLoad: function () {
    var _this = this;
    //圆点设置
    var leftCircle = 7.5;
    var topCircle = 7.5;
    var circleList = [];
    for (var i = 0; i < 24; i++) {
      if (i == 0) {
        topCircle = 15;
        leftCircle = 15;
      } else if (i < 6) {
        topCircle = 7.5;
        leftCircle = leftCircle + 102.5;
      } else if (i == 6) {
        topCircle = 15
        leftCircle = 620;
      } else if (i < 12) {
        topCircle = topCircle + 94;
        leftCircle = 620;
      } else if (i == 12) {
        topCircle = 565;
        leftCircle = 620;
      } else if (i < 18) {
        topCircle = 570;
        leftCircle = leftCircle - 102.5;
      } else if (i == 18) {
        topCircle = 565;
        leftCircle = 15;
      } else if (i < 24) {
        topCircle = topCircle - 94;
        leftCircle = 7.5;
      } else {
        return
      }
      circleList.push({ topCircle: topCircle, leftCircle: leftCircle });
    }
    this.setData({
      circleList: circleList
    })
    //圆点闪烁
    setInterval(function () {
      if (_this.data.colorCircleFirst == '#FFDF2F') {
        _this.setData({
          colorCircleFirst: '#FE4D32',
          colorCircleSecond: '#FFDF2F',
        })
      } else {
        _this.setData({
          colorCircleFirst: '#FFDF2F',
          colorCircleSecond: '#FE4D32',
        })
      }
    }, 500)
    //奖品item设置
    var awardList = [];
    //间距,怎么顺眼怎么设置吧.
    var topAward = 25;
    var leftAward = 25;
    for (var j = 0; j < 8; j++) {
      if (j == 0) {
        topAward = 25;
        leftAward = 25;
      } else if (j < 3) {
        topAward = topAward;
        //166.6666是宽.15是间距.下同
        leftAward = leftAward + 166.6666 + 15;
      } else if (j < 5) {
        leftAward = leftAward;
        //150是高,15是间距,下同
        topAward = topAward + 150 + 15;
      } else if (j < 7) {
        leftAward = leftAward - 166.6666 - 15;
        topAward = topAward;
      } else if (j < 8) {
        leftAward = leftAward;
        topAward = topAward - 150 - 15;
      }
      var imageAward = this.data.imageAward[j];
      awardList.push({ topAward: topAward, leftAward: leftAward, imageAward: imageAward });
    }
    this.setData({
      awardList: awardList
    })
  },
  //开始游戏
  startGame: function () {
    if (this.data.isRunning) return
    this.setData({
      isRunning: true
    })
    var _this = this;
    var indexSelect = 0
    var i = 0;
    var timer = setInterval(function () {
      indexSelect++;
      //这里我只是简单粗暴用y=30*x+200函数做的处理.可根据自己的需求改变转盘速度
      i += 30;
      if (i > 1000) {
        //去除循环
        clearInterval(timer)
        //获奖提示

        wx.showModal({
          title: '恭喜您',
          content: '获得了第' + (_this.data.indexSelect + 1) + "个优惠券",
          showCancel: false,//去掉取消按钮
          success: function (res) {
            if (res.confirm) {
              _this.setData({
                isRunning: false
              })
            }
          }
        })
      }
      indexSelect = indexSelect % 8;
      _this.setData({
        indexSelect: indexSelect
      })
    }, (200 + i))
  }
})

 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145

demo代码下载

优快云微信小程序开发专栏 
我的博客,欢迎批评!

微信小程序开发之圆形菜单 仿建行圆形菜单 建行APP首页有个圆形菜单.仿了个玩具出来. 功能介绍: 1.一个圆形背景.六个item菜单.中间是微信用户的头像; 2.触摸滚动.速度较小时,随手指滚动,手指抬起,滚动停止;速度较大时,随手指滚动,手指抬起,还会自动滚动一段时间; 优快云微信小程序开发-专栏,欢迎关注! 相关技术: 1.微信小程序开发之大转盘 仿天猫超市抽奖 2.微信小程序之仿微信漂流瓶 3.微信小程序开发之 阅读详情

相关推荐

300 万粉丝的秘密:微信抽奖活动从架构到运营

抽奖活动,应该算是最古老的运营活动之一了,无论线上还是线下,商场还是超市,大转盘都无处不在。然而,在微信红包出现以后,抽奖活动便发生了质的飞跃,因为用户抽到的红包可以直接发放到零钱中,这可是真金白银的活动,而且立马可以体验到好处,刺激反馈非常实时。所以,基于微信的红包抽奖想不火都不行。早在 2015 年初的时候,我司的运营同学策划了基于微信服务号的『天天大抽奖』活动,在那样的蛮荒时期,朋友圈活动还不

前端姬小光 1万+

08_微信小程序之大转盘svg实现

08_微信小程序之大转盘svg实现 一.关于微信小程序对svg的支持 这里先准备一个静态的svg文件做测试 <!--components/turntable-svg/images/secs.svg--> <svg width="320" height="320" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g transform="rotate(-67.5,1

gzx的博客 1053

微信小程序仿天猫超市大转盘抽奖源码包:含动画逻辑、奖品配置与完整界面截图

直接可用的微信小程序大转盘抽奖实现,视觉和交互高度还原天猫超市风格。包含标准小程序项目结构:app.js、app.、app.wxss基础文件,pages页面目录(含抽奖主页面及结果页),images资源图库(转盘底图、指针、按钮等),tianmao专属样式模块(统一配色与动效规则),以及utils工具函数(随机中奖算法、时间戳防重复点击、弹窗控制等)。所有功能均已真机调试验证:支持自定义奖品列表(名称、概率、图标)、顺滑CSS3转盘动画、中奖结果实时提示、二次确认弹窗、抽奖次数限制逻辑。截图覆盖完整流程——

jupi8的博客 263

【微信小程序开发】 踩坑 抽奖幸运大转盘 完美实战

项目需求运用到大转盘 可设置概率 可直接自定义结果 效果如下 两种方法 一 通过canvas 实现 但是因为定时器原因 手机端卡顿严重 故而最终使用了方法二 但也是该记录下 学习canvas 二 通过小程序Apianimation完成完美解决卡顿问题 更精确定位 有样式缺陷 ...

悟空— 5002

微信小程序大转盘源码,亲测能用!

微信小程序大转盘,适合做抽奖活动。亲测能用!!!!

小程序源码 大转盘 (代码+截图)

小程序源码 大转盘 (代码+截图)小程序源码 大转盘 (代码+截图)小程序源码 大转盘 (代码+截图)小程序源码 大转盘 (代码+截图)小程序源码 大转盘 (代码+截图)小程序源码 大转盘 (代码+截图)小程序源码 大转盘 (代码+截图)小程序源码 大转盘 (代码+截图)小程序源码 大转盘 (代码+截图)小程序源码 大转盘 (代码+截图)小程序源码 大转盘 (代码+截图)小程序源码 大转盘 (代码+截图)小程序源码 大转盘 (代码+截图)小程序源码 大转盘 (代码+截图)小程序源码 大转盘 (代码+截图)小程序源码 大转盘 (代码+截图)小程序源码 大转盘 (代码+截图)小程序源码 大转盘 (代码+截图)小程序源码 大转盘 (代码+截图)小程序源码 大转盘 (代码+截图)小程序源码 大转盘 (代码+截图)小程序源码 大转盘 (代码+截图)小程序源码 大转盘 (代码+截图)小程序源码 大转盘 (代码+截图)小程序源码 大转盘 (代码+截图)小程序源码 大转盘 (代码+截图)小程序源码 大转盘 (代码+截图)小程序源码 大转盘 (代码+截图)小程序源码 大转盘 (代码+截图)小程序源码 大

010 - 微信小程序开发之大转盘 仿天猫超市抽奖

天猫超市翻牌的转盘经常用,以前做Android,没啥想法,现在尝试微信小程序,看到别人家APP里有啥好玩的,就想去做一个. 上GIF看效果: 简要的说一下. 1.外面一圈闪烁的小球是用js控制的样式.500ms改变一次样式.简单粗暴; 2.抽奖的item也是js控制背景,但是怎么样让它优雅的停下来是个问题.动画中有timingFunction可以设置速度.自己用js就没那么简单了.

李观杰的博客 723

抽奖转盘-幸运大转盘-uniapp-项目源码

这是一个uniapp应用项目源码完整,是个抽奖转盘的游戏插件,幸运大转盘,可添加各种奖品图片和名称,通过HBuilder X开发工具选uniapp方式打开,uniapp项目可编译发行跨端应用(包括了各种小程序以及APP),可编译正常运行,适合新手入门参考学习。 相关指导教程请看作者发表的文章https://blog.youkuaiyun.com/zs1028/article/details/127751395

微信小程序源码大集004---小程序实现大转盘 仿天猫抽奖 跑马灯效果(有图有源码)

  10天零基础入门微信小程序开发,只讲干货,实战入门,10天开发属于自己的上线小程序。 10天零基础入门小程序系列教程 基本实现功能 1,小程序仿天猫超市抽奖大转盘 2,跑马灯效果 3,开始抽奖,抽奖完成后有弹窗   先看效果图     简单说一下   1.外面一圈闪烁的小球是用js控制的样式.500ms改变一次样式.简单粗暴; 2.抽奖的item也是js控制背景...

编程小石头 2万+

微信小程序大转盘小程序源码.zip

微信小程序大转盘小程序源码.zip

微信小程序 大转盘 (源码)

微信小程序 大转盘 (源码)微信小程序 大转盘 (源码)微信小程序 大转盘 (源码)微信小程序 大转盘 (源码)微信小程序 大转盘 (源码)微信小程序 大转盘 (源码)微信小程序 大转盘 (源码)微信小程序 大转盘 (源码)微信小程序 大转盘 (源码)微信小程序 大转盘 (源码)微信小程序 大转盘 (源码)微信小程序 大转盘 (源码)微信小程序 大转盘 (源码)微信小程序 大转盘 (源码)微信小程序 大转盘 (源码)微信小程序 大转盘 (源码)微信小程序 大转盘 (源码)微信小程序 大转盘 (源码)微信小程序 大转盘 (源码)微信小程序 大转盘 (源码)微信小程序 大转盘 (源码)微信小程序 大转盘 (源码)微信小程序 大转盘 (源码)微信小程序 大转盘 (源码)微信小程序 大转盘 (源码)微信小程序 大转盘 (源码)微信小程序 大转盘 (源码)微信小程序 大转盘 (源码)微信小程序 大转盘 (源码)微信小程序 大转盘 (源码)微信小程序 大转盘 (源码)微信小程序 大转盘 (源码)微信小程序 大转盘 (源码)微信小程序 大转盘 (源码)微信小程序 大转盘 (源码)微信小程序 大转盘

[微信小程序]抽奖、水果机营销组件

小程序营销组件, Marketing components for WeChatApp

iChangebaobao的博客 997

大转盘抽奖小程序源码.zip

大转盘抽奖小程序源码,测试依旧可用,无BUG,跑马灯旋转效果,非常酷炫。

微信小程序开发之页面分享 onShareAppMessage

今天下午突然听到群里有人说微信小程序工具更新了,文档也更新了不少内容.  顾不上吃冬至的饺子.我就冲进来了.  先说分享功能,目前真机尚不能调试.开发工具上可以看看效果.后续还会更新.  Page()中加上如下代码后在右上角就会出现三个小白点  title:分享的标题.  desc:分享一段描述.  path:这个参数有点意思.以前在微信中的分享一般都是url.这里是当

大灰狼的小绵羊哥哥的博客 4万+

LEC/FORMAL --- PARTIII debug

lec(logic equivalence checking)又叫formal check,是对ic design的综合,PR前后的设计进行逻辑对比检查的工具/手段,保证综合不改变rtl原始的logic function。目前用的较多的就是C家的formal工具。接下来介绍一下lec过程中遇到的问题以及debug手段。...

sinat_27691203的博客 7704

【2025CVPR】基于脉冲神经网络的能效目标检测模型:Multi-scale Spiking Detector(MSD)深度解析

本文提出了一种创新的多尺度脉冲神经网络目标检测器(MSD),通过生物启发的ONNB模块和MSDF框架实现了高效准确的目标检测。该模型采用端到端直接训练策略,在COCO数据集上达到62.0%mAP的精度,同时仅需7.8M参数和6.43mJ能耗,较传统方法提升2.8%精度并降低82.9%能耗。实验验证了其在小目标检测和事件数据处理的优越性,为边缘计算应用提供了新范式。

hasakie的博客 1107
上一篇: 微信小程序开发之五星评分
下一篇: 微信小程序开发之录音机 音频播放 动画 (真机可用)
Footloose_
博客等级 码龄10年 254粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值