基于JS+Canvas的lucky-canvas 抽奖功能

 更新时间:2022年06月14日 10:09:50   作者:vaelcy  
一个基于 Js + Canvas 的大转盘和九宫格和老虎机抽奖,使用lucky-canvas 功能可以自由配置,多端适配的特点,本文通过实例代码给大家详细介绍抽奖方法,感兴趣的朋友一起看看吧

ucky-canvas 介绍

一个基于 Js + Canvas 的【大转盘 & 九宫格 & 老虎机】抽奖, 致力于为 web 前端提供一个功能强大且专业可靠的组件, 只需要通过简单配置即可实现自由化定制, 帮助你快速的完成产品需求。

lucky-canvas 功能特点

自由配置

奖品 / 文字 / 图片 / 颜色 / 按钮均可自由配置;支持同步 / 异步抽奖;中奖概率前 / 后端可控

多端适配

支持 JS / TS / JQ / Vue / React / 微信小程序 / UniApp / Taro 等;并且多端使用 / 表现形式完全一致

响应式

自动根据设备 dpr 调整清晰度;并支持使用 百分比 / rem / rpx 属性来适配移动端布局

具体详细功能介绍api请看官网

下面我简单写了三个抽奖小demo,大家可做参考。

代码块展示

这里使用掘金的码上掘金展示效果给大家看,ps:里边的图片因为引用的是本地所以不显示,可以看下面效果图的展示

https://code.juejin.cn/pen/7103522105597100039

效果图展示

图片是随便用的本地图片(懒得在网上找图片资源了),大家可自行替换成自己想要的图片哈,我这里就是简单实现一下demo。

代码如下

抽奖一

// 第一个抽奖
const myLucky = new LuckyCanvas.LuckyGrid('#my-lucky', {
    width: '300px',
    height: '300px',
    blocks: [
        { padding: '10px', background: '#869cfa' },
        { padding: '10px', background: '#e9e8fe' },
    ],
    prizes: [
        { x: 0, y: 0, fonts: [{ text: '谢谢参与', top: '40%' }], },
        { x: 1, y: 0, fonts: [{ text: '小米手环', top: '40%' }], },
        { x: 2, y: 0, fonts: [{ text: '苹果13', top: '40%' }], },
        { x: 2, y: 1, fonts: [{ text: '优惠券50', top: '40%' }], },
        { x: 2, y: 2, fonts: [{ text: '优惠券100', top: '40%' }], },
        { x: 1, y: 2, fonts: [{ text: '迷你小冰箱', top: '40%' }], },
        { x: 0, y: 2, fonts: [{ text: '腾讯会员', top: '40%' }], },
        { x: 0, y: 1, fonts: [{ text: '优酷会员', top: '40%' }], },
    ],
    buttons: [
        {
            x: 1, y: 1,
            background: '#9c9dd8',
            fonts: [{ text: '抽奖', top: '40%' }],
        },
    ],
    defaultStyle: {
        background: '#b8c5f2',
        fontSize: '14'
    },
    start: function () {
        // 开始游戏
        myLucky.play()
        // 使用定时器模拟接口
        setTimeout(() => {
            // 结束游戏, 并抽第0号奖品
            myLucky.stop(0)
        }, 3000)
    },
    end: function (event) {
        // 获取抽奖的值
        console.log(event)
    }
})

抽奖二

// 第二个抽奖
const prizeImg2 = {
    src: '../../img/icon1.png',
    activeSrc: '../../img/icon3.png',
    width: '50%',
    top: '25%'
}
const myLucky2 = new LuckyCanvas.LuckyGrid('#my-lucky2', {
    width: '300px',
    height: '300px',
    blocks: [
        { padding: '10px', background: '#869cfa' },
        { padding: '10px', background: '#e9e8fe' },
    ],
    prizes: [
        { x: 0, y: 0, imgs: [prizeImg2] },
        { x: 1, y: 0, imgs: [prizeImg2] },
        { x: 2, y: 0, imgs: [prizeImg2] },
        { x: 2, y: 1, imgs: [prizeImg2] },
        { x: 2, y: 2, imgs: [prizeImg2] },
        { x: 1, y: 2, imgs: [prizeImg2] },
        { x: 0, y: 2, imgs: [prizeImg2] },
        { x: 0, y: 1, imgs: [prizeImg2] },
    ],
    buttons: [
        {
            x: 1, y: 1,
            background: '#9c9dd8',
            fonts: [{ text: '抽奖', top: '40%' }],
        },
    ],
    defaultStyle: {
        background: '#b8c5f2'
    },
    start: function () {
        // 开始游戏
        myLucky2.play()
        // 使用定时器模拟接口
        setTimeout(() => {
            // 结束游戏, 并抽第0号奖品
            myLucky2.stop(0)
        }, 3000)
    },
    end: function (event) {
        // 获取抽奖的值
        console.log(event)
    }
})

抽奖三

// 第三个抽奖
const prizeImg3 = [
    {
        src: '../../img/icon1.png',
        width: '50%',
        top: '15%'
    },
    {
        src: '../../img/icon2.png',
        width: '50%',
        top: '15%'
    },
    {
        src: '../../img/icon3.png',
        width: '50%',
        top: '15%'
    },
    {
        src: '../../img/icon4.png',
        width: '50%',
        top: '15%'
    },
    {
        src: '../../img/icon5.png',
        width: '50%',
        top: '15%'
    },
    {
        src: '../../img/icon6.png',
        width: '50%',
        top: '15%'
    },
    {
        src: '../../img/icon1.png',
        width: '50%',
        top: '15%'
    },
    {
        src: '../../img/icon2.png',
        width: '50%',
        top: '15%'
    }
]
const myLucky3 = new LuckyCanvas.LuckyGrid('#my-lucky3', {
    width: '300px',
    height: '300px',
    blocks: [
        { padding: '10px', background: '#869cfa' },
        { padding: '10px', background: '#e9e8fe' },
    ],
    prizes: [
        { x: 0, y: 0, fonts: [{ text: '谢谢参与', top: '60%' }], imgs: [prizeImg3[0]] },
        { x: 1, y: 0, fonts: [{ text: '小米手环', top: '60%' }], imgs: [prizeImg3[1]] },
        { x: 2, y: 0, fonts: [{ text: '苹果13', top: '60%' }], imgs: [prizeImg3[2]] },
        { x: 2, y: 1, fonts: [{ text: '优惠券50', top: '60%' }], imgs: [prizeImg3[3]] },
        { x: 2, y: 2, fonts: [{ text: '优惠券100', top: '60%' }], imgs: [prizeImg3[4]] },
        { x: 1, y: 2, fonts: [{ text: '迷你小冰箱', top: '60%' }], imgs: [prizeImg3[5]] },
        { x: 0, y: 2, fonts: [{ text: '腾讯会员', top: '60%' }], imgs: [prizeImg3[6]] },
        { x: 0, y: 1, fonts: [{ text: '优酷会员', top: '60%' }], imgs: [prizeImg3[7]] },
    ],
    buttons: [
        {
            x: 1, y: 1,
            background: '#9c9dd8',
            fonts: [{ text: '抽奖', top: '40%' }],
        },
    ],
    defaultStyle: {
        background: '#b8c5f2',
        fontSize: '14'
    },
    start: function () {
        // 开始游戏
        myLucky3.play()
        // 使用定时器模拟接口
        setTimeout(() => {
            // 结束游戏, 并抽第0号奖品
            myLucky3.stop(0)
        }, 3000)
    },
    end: function (event) {
        // 获取抽奖的值
        console.log(event)
    }
})

到此这篇关于基于JS+Canvas的lucky-canvas 抽奖功能的文章就介绍到这了,更多相关lucky canvas 抽奖内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • JavaScript中实现Map的示例代码

    JavaScript中实现Map的示例代码

    本篇文章给大家介绍javascript中实现map的示例代码,代码写的简单易懂,可以获取、删除键值,刚兴趣的朋友跟着脚本之家小编一起学习吧。
    2015-09-09
  • JavaScript reduce和reduceRight详解

    JavaScript reduce和reduceRight详解

    这篇文章主要介绍了JavaScript reduce和reduceRight的高级用法详解的相关资料,需要的朋友可以参考下
    2016-10-10
  • js脚本分页代码分享(7种样式)

    js脚本分页代码分享(7种样式)

    这篇文章主要介绍了7种JS脚本分页样式,推荐给大家,有需要的小伙伴可以参考下。
    2015-08-08
  • JavaScript实现多文件拖动上传功能

    JavaScript实现多文件拖动上传功能

    这篇文章主要为大家详细介绍了如何使用JavaScript实现多文件拖动上传功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-04-04
  • 了解Javascript中函数作为对象的魅力

    了解Javascript中函数作为对象的魅力

    这篇文章主要介绍了了解Javascript中函数作为对象的魅力,javascript中函数可以有属性,可以有方法, 可以享有所有对象所拥有的特性。并且最重要的,她还可以直接被调用,需要的朋友可以参考下
    2019-06-06
  • JS根据生日算年龄的方法

    JS根据生日算年龄的方法

    这篇文章主要介绍了JS根据生日算年龄的方法,涉及javascript操作时间的相关技巧,非常简单实用,需要的朋友可以参考下
    2015-05-05
  • 详解JSON和JSONP劫持以及解决方法

    详解JSON和JSONP劫持以及解决方法

    这篇文章主要介绍了详解JSON和JSONP劫持以及解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • javascript基本数据类型和转换

    javascript基本数据类型和转换

    本文主要介绍了javascript的基本数据类型和转换,具有很好的参考价值,下面跟着小编一起来看下吧
    2017-03-03
  • 无缝滚动的简单实现代码(推荐)

    无缝滚动的简单实现代码(推荐)

    下面小编就为大家带来一篇无缝滚动的简单实现代码(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • HTTP HEAD请求的使用场合实例详解

    HTTP HEAD请求的使用场合实例详解

    这篇文章主要为大家介绍了HTTP HEAD请求的使用场合实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12

最新评论