支付宝小程序营销组件 翻牌抽奖·flip-draw

2020-09-18 11:26 更新

页面上有 N 张卡牌,每张卡牌对应不同奖品,用户点击卡牌进行翻牌抽奖。开发者可自定义卡牌数量和翻牌的次数。

更多详细信息请参见 代码市场

扫码体验

示例代码

安装

npm i ant-mini-flip-draw --save

注册

//.json
{
  "usingComponents": {
    "flipdraw": "ant-mini-flip-draw/component/index"
  }
}

调用

<!-- .axml -->
<view>
<flipdraw
    prizeList="{{prizeList}}"
    prizeName="{{prizeName}}"
    isDrawing="{{isDrawing}}"
    flipAllCards="{{flipAllCards}}"
    onFlipStart="onFlipStart"
  />
</view>
//.js
Page({
  data: {
    docParamsImg: "https://img.alicdn.com/tfs/TB1sfaaJSzqK1RjSZFHXXb3CpXa-1326-846.png",
    prizeList: [
      {
      'name': '谢谢参与1',
      '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': '谢谢参与2',
      'icon': 'https://zos.alipayobjects.com/rmsportal/dexmbhnbsLRGIZGBqTcA.png'
      },
      {
      'name': '1元红包',
      'icon': 'https://zos.alipayobjects.com/rmsportal/RxQruKQwiQCeYXhvwCfP.png'
      },
      {
      'name': '谢谢参与3',
      'icon': 'https://zos.alipayobjects.com/rmsportal/dexmbhnbsLRGIZGBqTcA.png'
      },
      {
      'name': '5元红包',
      'icon': 'https://zos.alipayobjects.com/rmsportal/qanDEFeGBoiPflYxkhJY.png'
      }
    ],
    cardBgImg: 'https://gw.alicdn.com/tfs/TB1P.AMXMHqK1RjSZJnXXbNLpXa-610-600.png',
    prizeName: '',
    flipAllCards: false,
    isDrawing: false,
  },
  onFlipStart() {
    console.log('开始了,这个时候最好页面控制下 loading 状态,组件内不做控制');
    this.setData({
      isDrawing: true, // 修改抽奖状态,防止重复点击多次请求
    });
    // 开始抽奖
    setTimeout(() => {
      console.log('拿到结果,设置奖品信息');
      if (Math.random() > 0.3) {
        this.setData({
          prizeName: '666元红包',
          isDrawing: false,
        });
      } else {
        this.setData({
          isDrawing: false, // 抽奖结束一定要还原 isDrawing 状态
        });
      }
      this.showResultDialog()
    }, 1000);
  },
  showResultDialog() {
    // do something
    this.setData({
      flipAllCards: true, // 将剩下未翻过的牌自动翻,展示奖品结果。
    })
  }
});undefined

属性

属性 描述 类型 默认值 必填
prizeList 奖项列表,须包含 name 和 icon 字段。 Array []
prizeName 抽奖结果的奖品 name,其值必须位于 prizeList 中。 String ''
cardNum 展示多少张卡片,推荐 3/6/9。 Number 9
cardHeight 宽度固定 210,高度需要等比换算设置。 Number 210
cardBgImg 卡背图片。 String -
unawardImg 未中奖展示图片。 String -
isDrawing 是否正在抽奖,用于限制点击。 Boolean -
flipAllCards 是否翻转剩余卡片。 String -
onFlipStart 转动开始的回调。 Function () => {}

注意

  • 请求前一定要设置 isDrawing = true,请求结束后一定要设置 isDrawing = false
  • cardHeight 卡片高度是相对 750 视觉稿设置的,宽高默认 210x210rpx。宽度固定,高度可变。比如 210x300 的图片,cardHeight 就设置为 300;如果是 200x250 的图片需要等比转换一下,cardHeight = 210 * (250/200)。
以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号