1.0.5 • Published 4 years ago

flyingd-fruit-slots v1.0.5

Weekly downloads
-
License
ISC
Repository
-
Last release
4 years ago

小程序9宫格抽奖插件

查看GitHub仓库最新文档(源码)

https://github.com/flyingdwang/flyingd-fruit-slots.git

查看在线演示(支付宝扫码)

npm.io

安装

cnpm install flyingd-fruit-slots --save

注册

// .json
{
  "usingComponents": {
	"fl-fruit-slots": "flyingd-fruit-slots/fl-fruit-slots"
  }
}

演示代码

<!-- .axml -->
<fl-fruit-slots 
    prizeList="{{prizeList}}"
    prizeActiveIndex="{{prizeActiveIndex}}"
    disabled="{{disabled}}"
    currentIndex="{{currentIndex}}"
    onStart="onStart"
    onFinish="onFinish"
  />
// .js

Page({
    data:{
        prizeList:[
            {
                'name': '谢谢参与',
                'icon':'https://zos.alipayobjects.com/rmsportal/dexmbhnbsLRGIZGBqTcA.png'
            },
            {
                'name': '666元红包',
                'icon':'https://zos.alipayobjects.com/rmsportal/nxpXbcNBOmbeIOVCUsuS.png'
            },
            {
                'name': '1元红包',
                'icon':'https://zos.alipayobjects.com/rmsportal/RxQruKQwiQCeYXhvwCfP.png'
            },
            {
                'name': '3元红包',
                'icon':'https://zos.alipayobjects.com/rmsportal/tyMAYvTdjRFOVxqWVhsj.png'
            },
            {
                'name': '谢谢参与',
                'icon':'https://zos.alipayobjects.com/rmsportal/dexmbhnbsLRGIZGBqTcA.png'
            },
            {
                'name': '1元红包',
                'icon':'https://zos.alipayobjects.com/rmsportal/RxQruKQwiQCeYXhvwCfP.png'
            },
            {
                'name': '谢谢参与',
                'icon':'https://zos.alipayobjects.com/rmsportal/dexmbhnbsLRGIZGBqTcA.png'
            },
            {
                'name': '5元红包',
                'icon':'https://zos.alipayobjects.com/rmsportal/qanDEFeGBoiPflYxkhJY.png'
            },
        ],
        prizeActiveIndex: null,
        disabled: false,
        currentIndex: 0,
        tipText: '',
    },
    /** 开始抽奖 */
    onStart(resolve) {
    	/** 有resolve 返回值 则抽奖 否则 不执行  */
    	/** 
        	if(true){
        		resolve(index)
        	}else{
        		return
        	}
        */
        /** 抽奖 */
        this.requestFun().then(res=>{
            console.log(res.index);
            /** 成功回调 */
            resolve(res.index);
            this.setData({
                prizeActiveIndex:res.index,
                tipText: '正在抽奖...'
            })
        })
    },
    /** 抽奖结束回调 */
    onFinish(index, prizeItem) {
        this.setData({
            tipText: `抽奖结果:${prizeItem.name}`
        });
    },
    /** 模拟请求数据 */
    requestFun(){
        return new Promise((resolve, reject)=>{
            let index = Math.floor(Math.random() * 8);
            let { name } = this.data.prizeList[index];
            resolve({name,index});
        })
    },
});

属性

参数说明类型默认值必填
width组件宽度,单位 rpx。Number700
margin格子间的边距,单位 rpx。Number20
prizeList奖项列表,长度必须为8,须包含 name 和 icon字段。Array[]
prizeActiveIndex抽奖结果的奖品 索引(0-8),其值必须位于 prizeList 中。Numbernull
rollTimes转动圈数。Number3
currentIndex转动开始的格子下标。Number0
speed转动速度,单位 ms。Number100
class自定义类名。String-
disabled抽奖按钮是否可点击。Booleanfalse
onStart抽奖转动方法; 需要有成功回调 resolve();Function() => {}
onFinish转动结束的回调, @params(index: 奖品所在格子下标,prizeItem: 奖品详情参数)。Function(index, prizeItem)=>{}

说明: 组件中格子自左上角顺时针开始标号,围绕中间按钮,下标从 0 开始递增到 7。当需要组件从左下角的格子为初始位置开始转动,只需要设置 currentIndex = 6 即可。

查看格子顺序详情(图片)

npm.io