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


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中的Web worker多线程API研究
Dec 06 Javascript
Java File类的常用方法总结
Mar 18 Javascript
javascript版2048小游戏
Mar 18 Javascript
JavaScript使用encodeURI()和decodeURI()获取字符串值的方法
Aug 04 Javascript
JS实现的相册图片左右滚动完整实例
Nov 23 Javascript
Bootstrap源码解读表单(2)
Dec 22 Javascript
基于JavaScript实现轮播图原理及示例
Apr 10 Javascript
使用vue-router设置每个页面的title方法
Feb 11 Javascript
利用vue.js把静态json绑定bootstrap的table方法
Aug 28 Javascript
vue中实现图片压缩 file文件的方法
May 28 Javascript
javascript中layim之查找好友查找群组
Feb 06 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
站长助手-网站web在线管理程序 v1.0 下载
2007/05/12 PHP
PHP简单计算两个时间差的方法示例
2017/06/20 PHP
php闭包中使用use声明变量的作用域实例分析
2018/08/09 PHP
laravel框架与其他框架的详细对比
2019/10/23 PHP
php使用redis的有序集合zset实现延迟队列应用示例
2020/02/20 PHP
javascript实现回车键提交表单方法总结
2015/01/10 Javascript
JS显示表格内指定行html代码的方法
2015/03/31 Javascript
浅析Node.js 中 Stream API 的使用
2015/10/23 Javascript
详解Bootstrap按钮
2016/01/04 Javascript
JavaScript实现图片自动加载的瀑布流效果
2016/04/11 Javascript
JavaScript必看小技巧(必看)
2016/06/07 Javascript
jQuery解决$符号命名冲突
2016/06/18 Javascript
Bootstrap标签页(Tab)插件使用方法
2017/03/21 Javascript
JavaScript实现移动端轮播效果
2017/06/06 Javascript
javascript按钮禁用和启用的效果实例代码
2017/10/29 Javascript
javaScript canvas实现(画笔大小 颜色 橡皮的实例)
2017/11/28 Javascript
如何快速解决JS或Jquery ajax异步跨域的问题
2018/01/08 jQuery
小程序自定义组件实现城市选择功能
2018/07/18 Javascript
vue.js实现照片放大功能
2020/06/23 Javascript
Python中Continue语句的用法的举例详解
2015/05/14 Python
快速查询Python文档方法分享
2017/12/27 Python
Python3+django2.0+apache2+ubuntu14部署网站上线的方法
2018/07/07 Python
Python bytes string相互转换过程解析
2020/03/05 Python
python mysql中in参数化说明
2020/06/05 Python
Django多数据库联用实现方法解析
2020/11/12 Python
基于Python实现粒子滤波效果
2020/12/01 Python
CSS3 Media Queries(响应式布局可以让你定制不同的分辨率和设备)
2013/06/06 HTML / CSS
Aveda美国官网:天然护发产品、洗发水、护发素和沙龙
2016/12/09 全球购物
西班牙家用电器和电子产品购物网站:Mi Electro
2019/02/25 全球购物
餐饮业创业计划书范文
2014/01/06 职场文书
奉献演讲稿范文
2014/05/21 职场文书
电子商务系毕业生自荐信
2014/05/29 职场文书
国际贸易本科毕业生求职信
2014/09/26 职场文书
2014年医院工作总结
2014/11/20 职场文书
pytorch 实现多个Dataloader同时训练
2021/05/29 Python
科学家测试在太空中培育人造肉,用于未来太空旅行
2022/04/29 数码科技