圆盘抽奖
这个组件初始状态不指向奖品,而是指向缝隙
Api
参数:
名称 | 描述 |
---|---|
length |
奖品数量 |
el | 容器ID |
属性:
playing 是否正在动画中
方法:
playto(n,callback) 旋转到第n个奖品,旋转结束运行callback回调
代码示例
<div id="ltpanel" class="panel"></div> <script src="/js/zepto/zepto.min.js"></script> <script src="/loteryround.min.js"></script> <script> // 转盘初始化 // 第一个参数是奖品的个数 // 第二个是用来旋转的圆盘(指针不动) var panel=new PanelLotery({ length:8, //奖项数量 //duration:5000, //动画的时间,默认5秒,可不填 el:'#ltpanel' }); $('.panel-btn').on('click', function(event) { event.preventDefault(); if(panel.playing) return; // 这里是演示随机转到奖品n // 初始的指针右侧开始 // 顺时针方向开始算 // 第一个奖品是n=0 var n=Math.floor(Math.random()*8); console.log(n); panel.playto(n,function(){ alert(n); }); }); </script>
方形抽奖(同时支持圆形)
原生 JavaScript 抽奖组件,支持rem移动端适配,无框架依赖。
Api
参数:
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
lighturl | string | '' | 外部光圈图片 |
starturl | string | '' | 外部按钮图片 |
width | number | 800 | 宽度 |
height | number | 660 | 高度 |
total | number | 18 | 抽奖产品的总数 |
sbtnx | number | 239 | 开始抽奖按钮的位置x坐标 |
sbtny | number | 130 | 开始抽奖按钮的位置y坐标 |
sbtnw | number | 320 | 开始抽奖按钮的宽度 |
sbtnh | number | 100 | 开始抽奖按钮的高度 |
boxw | number | 100 | 奖品光效的宽度 |
boxh | number | 100 | 奖品光效的高度 |
position | string | "19_20, 128_20, 348_19, 569_239, 679_239" | 奖品光效的位置,对应奖品图片的布局,填入每个奖品的位置以及角度用逗号分割x_y_rotation(角度为0的可以不填写)例如19_20或者19_20_0表示第一个奖品的位置x坐标为19px y坐标为20px角度为0。) |
contentId | string | 容器 | 嵌入抽奖模块的div层的id |
onClickRollEvent | function | 点击开始的回调事件 | |
onCompleteRollEvent | function | 完成的回调事件 | |
b | string | null | 圆盘的图片,不填时 自动载入容器“contentId”下第一张图片 |
s | string | null | 开始抽奖按钮图片 |
bx | number | null | 圆盘的图片位置x坐标(转盘的中心点坐标为(0,0)) |
by | number | null | 圆盘的图片位置y坐标 |
sx | number | null | 开始抽奖按钮x坐标 |
sy | number | null | 开始抽奖按钮y坐标 |
sw |
number | 100 | 开始抽奖按钮宽度 |
sh | number | 100 | 开始抽奖按钮高度 |
unit | string | px | 尺寸单位 |
方法:
enable() 禁用
disable() 启用
stopRoll(index) 停止到所在的位置,在onClickRollEvent事件中调用。
reset() 重置
代码示例
方形示例
<div id="lotterycontent"> <img src="bg.png" style=""> </div> <script src="/js/delottery/lottery.js"></script> <script> //开始抽奖 function callJsToStart(lotteryObj){ // 这里是演示随机转到奖品0~9的一个数字 // 初始的指针右侧开始 // 顺时针方向开始算 // 第一个奖品是0 var prize = Math.floor(Math.random() * 10); lotteryObj.stopRoll(prize) } //动画完成 function callJsToComplete(prize){ alert("你的奖品是:"+prize); } new Lottery({ 'lighturl':'/images/p3_lottery_cur.png', 'total':10, 'width':6.8, 'height':4.99, 'sbtnx':1.85, 'sbtny':1.79, 'sbtnw':3.09, 'sbtnh':1.04, 'boxw':1.51, 'boxh':1.4, 'position':"0.2_0.22,1.81_0.22,3.45_0.22,5.08_0.22,0.2_1.76,5.08_1.76,0.2_3.33,1.81_3.33,3.45_3.33,5.08_3.33", 'contentId' : 'lotterycontent', 'onClickRollEvent' : callJsToStart, 'onCompleteRollEvent':callJsToComplete , 'unit':"rem", 'isResponsive':0 }); </script>
圆盘示例
这个组件初始化指向一个奖品
<div id="lotterycontent"> <img src="bg.png" style=""> </div> <script> new Lottery({ 'r':8,//奖品总数 'width':488,//宽度 'height':488,//高度 's':'/images/lottery/circle/z.png',//开始抽奖按钮图片 'bx':0,//圆盘的图片位置x坐标 (转盘的中心点坐标为(0,0)) 'by':0,//圆盘的图片位置y坐标 'sx':0,//开始抽奖按钮x坐标 'sy':0,//开始抽奖按钮y坐标 'contentId' : 'lotterycontent',//容器层的 id 'onClickRollEvent' : callJsToStarto,//对应上面接口 'onCompleteRollEvent':callJsToCompleteo //对应上面接口 }); </script>