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


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选择器(常用选择器说明)
Sep 28 Javascript
javascript利用初始化数据装配模版的实现代码
Nov 17 Javascript
Javascript的数组与字典用法与遍历对象的属性技巧
Nov 07 Javascript
解析Javascript中难以理解的11个问题
Dec 09 Javascript
AngularJs Modules详解及示例代码
Sep 01 Javascript
微信小程序 wxapp内容组件 icon详细介绍
Oct 31 Javascript
利用jQuery.Validate异步验证用户名是否存在(推荐)
Dec 09 Javascript
解决jQuery使用append添加的元素事件无效的问题
Aug 30 jQuery
脚手架vue-cli工程webpack的作用和特点
Sep 29 Javascript
JS/HTML5游戏常用算法之碰撞检测 地图格子算法实例详解
Dec 12 Javascript
详解vue-cli@2.x项目迁移日志
Jun 06 Javascript
js实现滑动滑块验证登录
Jul 24 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
用DBSQL类加快开发MySQL数据库程序的速度
2006/10/09 PHP
PHP 配置文件中open_basedir选项作用
2009/07/19 PHP
php中获取远程客户端的真实ip地址的方法
2011/08/03 PHP
php数组编码转换示例详解
2014/03/11 PHP
Laravel中批量赋值Mass-Assignment的真正含义详解
2017/09/29 PHP
ExtJS Store的数据访问与更新问题
2010/04/28 Javascript
js 单击式的下拉菜单效果实例
2013/08/13 Javascript
JavaScript入门基础
2015/08/12 Javascript
使用jQuery判断Div是否在可视区域的方法 判断div是否可见
2016/02/17 Javascript
angularjs实现文字上下无缝滚动特效代码
2016/09/04 Javascript
JQuery ZTree使用方法详解
2017/01/07 Javascript
vue中使用sessionStorage记住密码功能
2018/07/24 Javascript
jQuery Migrate 插件用法实例详解
2019/05/22 jQuery
el-form 多层级表单的实现示例
2020/09/10 Javascript
js实现限定区域范围拖拉拽效果
2020/11/20 Javascript
原生js实现表格循环滚动
2020/11/24 Javascript
Pthon批量处理将pdb文件生成dssp文件
2015/06/21 Python
Python整型运算之布尔型、标准整型、长整型操作示例
2017/07/21 Python
python中hashlib模块用法示例
2017/10/30 Python
详解从Django Rest Framework响应中删除空字段
2019/01/11 Python
python实现银联支付和支付宝支付接入
2019/05/07 Python
python3实现小球转动抽奖小游戏
2020/04/15 Python
python3使用Pillow、tesseract-ocr与pytesseract模块的图片识别的方法
2020/02/26 Python
Python3利用scapy局域网实现自动多线程arp扫描功能
2021/01/21 Python
html5+CSS3+JS实现七夕言情功能代码
2017/08/28 HTML / CSS
HTML5中外部浏览器唤起微信分享
2020/01/02 HTML / CSS
印度尼西亚电子产品购物网站:Kliknklik
2018/06/05 全球购物
高中毕业自我鉴定
2013/12/22 职场文书
优秀乡村医生事迹材料
2014/05/28 职场文书
公司周年庆典标语
2014/10/07 职场文书
2014年作风建设工作总结
2014/10/29 职场文书
2014年车间工作总结
2014/11/21 职场文书
优秀小学生事迹材料
2014/12/26 职场文书
2015年度服装销售工作总结
2015/03/31 职场文书
推广普通话主题班会
2015/08/17 职场文书
原生Javascript+HTML5一步步实现拖拽排序
2021/06/12 Javascript