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


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 相关文章推荐
由浅到深了解JavaScript类
Sep 08 Javascript
js字符编码函数区别分析
Jun 05 Javascript
jQuery通过点击行来删除HTML表格行的实现示例
Sep 10 Javascript
jquery实现简单的banner轮播效果【实例】
Mar 30 Javascript
bootstrap与Jquery UI 按钮样式冲突的解决办法
Sep 23 Javascript
原生javascript移动端滑动banner效果
Mar 10 Javascript
原生js实现验证码功能
Mar 16 Javascript
ReactNative列表ListView的用法
Aug 02 Javascript
Vue-Access-Control 前端用户权限控制解决方案
Dec 01 Javascript
Vue 实现列表动态添加和删除的两种方法小结
Sep 07 Javascript
微信小程序实现slideUp、slideDown滑动效果及点击空白隐藏功能示例
Dec 11 Javascript
antd中table展开行默认展示,且不需要前边的加号操作
Nov 02 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入门的学习方法
2007/01/02 PHP
让PHP支持断点续传的源码
2010/05/16 PHP
详解PHP中的PDO类
2015/07/06 PHP
php快速排序原理与实现方法分析
2016/05/26 PHP
php实现的二叉树遍历算法示例
2017/06/15 PHP
PHP实现限制IP访问及提交次数的方法详解
2017/07/17 PHP
PHP APP微信提现接口代码
2018/09/30 PHP
innerText和innerHTML 一些问题分析
2009/05/18 Javascript
论坛里点击别人帖子下面的回复,回复标题变成“回复 24# 的帖子”
2009/06/14 Javascript
js实现仿Windows风格选项卡和按钮效果实例
2015/05/13 Javascript
四种参数传递的形式——URL,超链接,js,form表单
2015/07/24 Javascript
JavaScript实现可拖拽的拖动层Div实例
2015/08/05 Javascript
jQuery+jsp下拉框联动获取本地数据的方法(附源码)
2015/12/03 Javascript
基于JQuery的$.ajax方法进行异步请求导致页面闪烁的解决办法
2016/05/10 Javascript
深入理解JS函数的参数(arguments)的使用
2016/05/28 Javascript
AngularJS验证信息框架的封装插件用法【w5cValidator扩展插件】
2016/11/03 Javascript
浅谈angular2的http请求返回结果的subcribe注意事项
2017/03/01 Javascript
vue.js事件处理器是什么
2017/03/20 Javascript
bootstrap-Treeview实现级联勾选
2017/11/23 Javascript
vue项目实战总结篇
2018/02/11 Javascript
JavaScript设计模式之建造者模式实例教程
2018/07/02 Javascript
react-native使用leanclound消息推送的方法
2018/08/06 Javascript
vue通过指令(directives)实现点击空白处收起下拉框
2018/12/06 Javascript
基于layPage插件实现两种分页方式浅析
2019/07/27 Javascript
vue总线机制(bus)知识点详解
2020/05/10 Javascript
使用graphics.py实现2048小游戏
2015/03/10 Python
Python使用scrapy抓取网站sitemap信息的方法
2015/04/08 Python
Python初学时购物车程序练习实例(推荐)
2017/08/08 Python
python 提取key 为中文的json 串方法
2018/12/31 Python
Django REST framework 视图和路由详解
2019/07/19 Python
Python实现验证码识别
2020/06/15 Python
使用CSS实现弹性视频html5案例实践
2012/12/26 HTML / CSS
英语专业毕业生自荐信
2013/10/28 职场文书
杜甫草堂导游词
2015/02/03 职场文书
vue项目支付功能代码详解
2022/02/18 Vue.js
服务器SVN搭建图文安装过程
2022/06/21 Servers