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


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 相关文章推荐
一个选择最快的服务器转向代码
Apr 27 Javascript
你未必知道的JavaScript和CSS交互的5种方法
Apr 02 Javascript
jQuery scroll事件实现监控滚动条分页示例
Apr 04 Javascript
JavaScript生成福利彩票双色球号码
May 15 Javascript
js实现的奥运倒计时时钟效果代码
Dec 09 Javascript
微信小程序 开发经验整理
Feb 15 Javascript
webpack配置proxyTable时pathRewrite无效的解决方法
Dec 13 Javascript
详解jQuery设置内容和属性
Apr 11 jQuery
深入理解javascript prototype的相关知识
Sep 19 Javascript
vue实现修改图片后实时更新
Nov 14 Javascript
TypeScript之调用栈的实现
Dec 31 Javascript
JavaScript 中的执行上下文和执行栈实例讲解
Feb 25 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
编译问题
2006/10/09 PHP
PHP fgetcsv 定义和用法(附windows与linux下兼容问题)
2012/05/29 PHP
JavaScript入门学习书籍推荐
2008/06/12 Javascript
获取URL地址中的文件名和参数的javascript代码
2009/09/02 Javascript
浅谈Javascript事件模拟
2012/06/27 Javascript
jqeury-easyui-layout问题解决方法
2014/03/24 Javascript
jQuery中设置form表单中action值的实现方法
2016/05/25 Javascript
Bootstrap轮播插件使用代码
2016/10/11 Javascript
简单实现IONIC购物车功能
2017/01/10 Javascript
javascript阻止事件冒泡和浏览器的默认行为
2017/01/21 Javascript
使用jQuery监听扫码枪输入并禁止手动输入的实现方法(推荐)
2017/03/21 jQuery
解决JS外部文件中文注释出现乱码问题
2017/07/09 Javascript
Kindeditor单独调用多图上传实例
2017/07/31 Javascript
详解如何解决vue开发请求数据跨域的问题(基于浏览器的配置解决)
2018/11/12 Javascript
vue-cli脚手架引入弹出层layer插件的几种方法
2019/06/24 Javascript
ES6中new Function()语法及应用实例分析
2020/02/19 Javascript
JavaScript中while循环的基础使用教程
2020/08/11 Javascript
[39:07]LGD vs VP 2018国际邀请赛淘汰赛BO3 第二场 8.21
2018/08/22 DOTA
Python程序员开发中常犯的10个错误
2014/07/07 Python
Python Json模块中dumps、loads、dump、load函数介绍
2018/05/15 Python
详解Python 切片语法
2019/06/10 Python
python调用pyaudio使用麦克风录制wav声音文件的教程
2019/06/26 Python
Python作用域与名字空间原理详解
2020/03/21 Python
python变量的作用域是什么
2020/05/26 Python
用html5绘制折线图的实例代码
2016/03/25 HTML / CSS
优秀毕业生推荐信范文
2014/03/07 职场文书
目标管理责任书
2014/04/15 职场文书
小学综治宣传月活动总结
2014/07/02 职场文书
乡镇八一建军节活动方案
2014/08/24 职场文书
干部作风建设个人剖析材料
2014/10/11 职场文书
五年级小学生评语
2014/12/26 职场文书
酒店开业主持词
2015/07/02 职场文书
公司规章制度范本
2015/08/03 职场文书
幼儿园小班开学寄语(2016秋季)
2015/12/03 职场文书
关于JavaScript回调函数的深入理解
2021/06/27 Javascript
「月刊Action」2022年5月号封面公开
2022/03/21 日漫