微信小程序抽奖组件的使用步骤


Posted in Javascript onJanuary 11, 2021

采用微信组件的方式提供,因组件内部使用了async/await,所以请在微信开发者工具"详情=》本地设置 勾上 增强编译和使用npm",小程序npm使用方法请参考:微信小程序-npm支持

先看效果图:

微信小程序抽奖组件的使用步骤

使用步骤:

步骤一:

安装依赖或前往githua下载源码,拷贝dist目录下的lottery-turntable目录

npm i lottery-turntable-for-wx-miniprogram

步骤二:

页面JSON配置

{
 "usingComponents": {
  "lottery-turntable":"lottery-turntable-for-wx-miniprogram/lottery_turntable/index"
 }
}

步骤三:

准备数据和增加事件处理(使用组件页面JS)

const datas = [{
 "id": "792085712309854208",
 "imgUrl": "../../images/icon.png",
 "title": "迅雷白金会员月卡 - 1"
}, {
 "id": "766410261029724160",
 "imgUrl": "../../images/icon.png",
 "title": "迅雷白金会员月卡 - 2"
}, {
 "id": "770719340921364480",
 "imgUrl": "../../images/icon.png",
 "title": "迅雷白金会员月卡 - 3"
}, {
 "id": "770946438416048128",
 "imgUrl": "../../images/icon.png",
 "title": "迅雷白金会员月卡 - 4"
}, {
 "id": "781950121802735616",
 "imgUrl": "../../images/icon.png",
 "title": "迅雷白金会员月卡 - 5"
}, {
 "id": "766411654436233216",
 "imgUrl": "../../images/icon.png",
 "title": "迅雷白金会员月卡 - 6"
}, {
 "id": "770716883860332544",
 "imgUrl": "../../images/icon.png",
 "title": "迅雷白金会员月卡 - 7"
}, {
 "id": "796879308510732288",
 "imgUrl": "../../images/icon.png",
 "title": "迅雷白金会员月卡 - 8"
}];
 
Page({
 data: {
  datas: datas, // 数据 
  prizeId: '', // 抽中结果id,通过属性方式传入组件
  config: { 		// 转盘配置,通过属性方式传入组件
   titleLength: 7
  }
 },
 /**
  * 次数不足回调
  * @param e
  */
 onNotEnoughHandle(e) {
  wx.showToast({
   icon: 'none',
   title: e.detail
  })
 },
 
 /**
  * 抽奖回调
  */
 onLuckDrawHandle() {
  this.setData({
   prizeId: this.data.datas[Math.floor(Math.random() * 10 % this.data.datas.length)].id
  });
 },
 
 /**
  * 动画旋转完成回调
  */
 onLuckDrawFinishHandle() {
  const datas = this.data.datas;
  const data = datas.find((item) => {
   return item.id === this.data.prizeId;
  });
  wx.showToast({
   icon: 'none',
   title: `恭喜你抽中 ${data.title}`
  })
  this.setData({
   prizeId: ''
  });
 }
})

步骤四:

页面使用

<lottery-turntable
   data="{{datas}}"
   prize-id="{{prizeId}}"
   count="{{5}}"
   config="{{config}}"
   bindLuckDraw="onLuckDrawHandle"
   bindNotEnough="onNotEnoughHandle"
   bindLuckDrawFinish="onLuckDrawFinishHandle"
  ></lottery-turntable>

步骤五:

更改组件配置项(以下为默认配置),通过config属性传入一个js对象

/**
 * ease: 取值如下
 * 'linear' 动画从头到尾的速度是相同的
 * 'ease' 动画以低速开始,然后加快,在结束前变慢
 * 'ease-in' 动画以低速开始
 * 'ease-in-out' 动画以低速开始和结束
 * 'ease-out' 动画以低速结束
 * 'step-start' 动画第一帧就跳至结束状态直到结束
 * 'step-end' 动画一直保持开始状态,最后一帧跳到结束状态
 */
// 以下为默认配置
let config = {
 size: {
  width: '572rpx',
  height: '572rpx'
 },                   // 转盘宽高
 bgColors: ['#FFC53F', '#FFED97'],    // 转盘间隔背景色 支持多种颜色交替
 fontSize: 10,              // 文字大小
 fontColor: '#C31A34',          // 文字颜色
 titleMarginTop: 12,           // 最外文字边距
 titleLength: 6             // 最外文字个数
 iconWidth: 29.5,            // 图标宽度
 iconHeight: 29.5,            // 图标高度
 iconAndTextPadding: 4,         // 最内文字与图标的边距
 duration: 8000,             // 转盘转动动画时长
 rate: 1.5,               // 由时长s / 圈数得到
 border: 'border: 10rpx solid #FEFAE4;', // 转盘边框
 ease: 'ease-out'            // 转盘动画
};

总结

到此这篇关于微信小程序抽奖组件的文章就介绍到这了,更多相关微信小程序抽奖组件内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
jQuery 学习第七课 扩展jQuery的功能 插件开发
May 17 Javascript
javascript 传统事件模型构造的事件监听器实现代码
May 31 Javascript
ajax异步刷新实现更新数据库
Dec 03 Javascript
JavaScript弹出新窗口并控制窗口移动到指定位置的方法
Apr 06 Javascript
AngularJS $injector 依赖注入详解
Sep 14 Javascript
Javascript中的async awai的用法
May 17 Javascript
自定义事件解决重复请求BUG的问题
Jul 11 Javascript
vue结合Echarts实现点击高亮效果的示例
Mar 17 Javascript
微信小程序之swiper轮播图中的图片自适应高度的方法
Apr 23 Javascript
在 Vue 项目中引入 tinymce 富文本编辑器的完整代码
May 04 Javascript
Vue中的vue-resource示例详解
Nov 02 Javascript
实现AJAX异步调用和局部刷新的基本步骤
Mar 17 Javascript
JS数组索引检测中的数据类型问题详解
Jan 11 #Javascript
了不起的11个JavaScript代码重构最佳实践小结
Jan 11 #Javascript
js删除对象中的某一个字段的方法实现
Jan 11 #Javascript
jQuery实现购物车全功能
Jan 11 #jQuery
jQuery实现手风琴特效
Jan 11 #jQuery
iview实现动态表单和自定义验证时间段重叠
Jan 10 #Javascript
JavaScript canvas实现文字时钟
Jan 10 #Javascript
You might like
php生成扇形比例图实例
2013/11/06 PHP
PHP改进计算字符串相似度的函数similar_text()、levenshtein()
2014/10/27 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
2019/11/14 PHP
JQuery中使用ajax传输超大数据的解决方法
2014/07/14 Javascript
JavaScript 事件入门知识
2015/04/13 Javascript
详解Javascript中的Object对象
2016/02/28 Javascript
深入浅析JavaScript中数据共享和数据传递
2016/04/25 Javascript
原生js实现自由拖拽弹窗代码demo
2016/06/29 Javascript
JS组件系列之使用HTML标签的data属性初始化JS组件
2016/09/14 Javascript
深究AngularJS中ng-drag、ng-drop的用法
2017/06/12 Javascript
JS中mouseup事件丢失的原因与解决办法
2017/06/14 Javascript
vue 动态修改a标签的样式的方法
2018/01/18 Javascript
Vuex入门到上手教程
2018/06/20 Javascript
vue中v-for通过动态绑定class实现触发效果
2018/12/06 Javascript
VUE接入腾讯验证码功能(滑块验证)备忘
2019/05/07 Javascript
小程序:授权、登录、session_key、unionId的详解
2019/05/15 Javascript
Vue.js实现大转盘抽奖总结及实现思路
2019/10/09 Javascript
vuex实现数据状态持久化
2019/11/11 Javascript
Vue $attrs &amp; inheritAttr实现button禁用效果案例
2020/12/07 Vue.js
Python类的基础入门知识
2008/11/24 Python
python实现划词翻译
2020/04/23 Python
web.py 十分钟创建简易博客实现代码
2016/04/22 Python
python 字典中文key处理,读取,比较方法
2018/07/06 Python
浅谈django三种缓存模式的使用及注意点
2018/09/30 Python
使用python接入微信聊天机器人
2020/03/31 Python
12个Python程序员面试必备问题与答案(小结)
2019/06/24 Python
Pycharm添加虚拟解释器报错问题解决方案
2020/10/13 Python
Django扫码抽奖平台的配置过程详解
2021/01/14 Python
有关HTML5中背景音乐的自动播放功能
2017/10/16 HTML / CSS
Moda Italia荷兰:意大利男士服装
2019/08/31 全球购物
教学评估实施方案
2014/03/16 职场文书
奥巴马英文演讲稿
2014/05/15 职场文书
漂亮妈妈观后感
2015/06/08 职场文书
网吧温馨提示
2015/07/17 职场文书
使用Spring处理x-www-form-urlencoded方式
2021/11/02 Java/Android
Python 详解通过Scrapy框架实现爬取CSDN全站热榜标题热词流程
2021/11/11 Python