首页 > 其他分享 >h5活动九宫格转盘-vue

h5活动九宫格转盘-vue

时间:2022-11-23 10:58:48浏览次数:72  
标签:src vue assets LuckyDraw require 九宫格 value h5 png

  • 实现的效果
    image
  • 操作步骤
  1. 首先安装插件
# npm 安装
npm install @lucky-canvas/vue@latest
# 或者 yarn 安装
yarn add @lucky-canvas/vue@latest
  1. 在main.js中引入
// 完整加载
import VueLuckyCanvas from '@lucky-canvas/vue'
Vue.use(VueLuckyCanvas)
  1. 最后在组件内使用
<LuckyGrid
        ref="myLucky"
        width="22.68rem"
        height="22.68rem"
        rows="4"
        cols="4"
        :prizes="prizes"
        :blocks="blocks"
        :buttons="buttons"
        :defaultStyle="defaultStyle"
        :activeStyle="activeStyle"
        :defaultConfig="defaultConfig"
        @start="startCallback"
        @end="endCallback"
      />
data() {
    return {
      blocks: [
        {
          padding: '1.5rem',
          imgs: [
            {
              src: require(`@/assets/LuckyDraw/bg2.png`),
              width: '22.68rem',  //为了h5适配,1rem=16px
              height: '22.68rem',
            },
          ],
        },
      ],
      prizes: [],
      //中奖标记
      activeStyle: {
        background: 'transparent',
      },
      //默认样式
      defaultStyle: {
        borderRadius: '0.62rem', //圆角20px
      },
      //默认配置
      defaultConfig: {
        gutter: '0.18rem', //格子之间的缝隙2px
      },
    }
  },
methods:{
getPrizesList() {
      const prizes = []
      const data = [
        {
          x: 0,
          y: 0,
          value: '10000Coins',
          src: require(`@/assets/LuckyDraw/10000coins.png`),
        },
        {
          x: 1,
          y: 0,
          value: '+0%',
          src: require(`@/assets/LuckyDraw/+0%.png`),
        },
        {
          x: 2,
          y: 0,
          value: '+2000%',
          src: require(`@/assets/LuckyDraw/+2000%.png`),
        },
        {
          x: 3,
          y: 0,
          value: '+50%',
          src: require(`@/assets/LuckyDraw/+50%.png`),
        },
        {
          x: 3,
          y: 1,
          value: '+0%',
          src: require(`@/assets/LuckyDraw/+0%.png`),
        },
        {
          x: 3,
          y: 2,
          value: '+100%',
          src: require(`@/assets/LuckyDraw/+100%.png`),
        },
        {
          x: 3,
          y: 3,
          value: '+200%',
          src: require(`@/assets/LuckyDraw/+200%.png`),
        },
        {
          x: 2,
          y: 3,
          value: '+0%',
          src: require(`@/assets/LuckyDraw/+0%.png`),
        },
        {
          x: 1,
          y: 3,
          value: '+1000%',
          src: require(`@/assets/LuckyDraw/+2000%.png`),
        },
        {
          x: 0,
          y: 3,
          value: '+500%',
          src: require(`@/assets/LuckyDraw/+500%.png`),
        },
        {
          x: 0,
          y: 2,
          value: '+300%',
          src: require(`@/assets/LuckyDraw/+300%.png`),
        },
        {
          x: 0,
          y: 1,
          value: '+0%',
          src: require(`@/assets/LuckyDraw/+0%.png`),
        },
      ]
      data.forEach((item) => {
        prizes.push({
          x: item.x,
          y: item.y,

          imgs: [
            {
              src: require(`@/assets/LuckyDraw/noChange.png`),
              width: '79px',
              height: '79px',
              activeSrc: require(`@/assets/LuckyDraw/change.png`),
            },
            {
              src: item.src,
              width: '50px',
              height: '45px',
              top: '7px',
            },
          ],
          fonts: [
            {
              text: item.value,
              top: '51px',
              fontColor: '#fff',
              fontSize: '10px',
              fontStyle: 'Poppins-SemiBold, Poppins',
              fontWeight: '500',
            },
          ],
        })
      })
      this.prizes = prizes
    },
}
// 点击抽奖按钮会触发star回调
startCallback(e,button) {
      // 调用抽奖组件的play方法开始游戏
      console.log(e,button,7777);
      this.$refs.myLucky.play()
      // 模拟调用接口异步抽奖
      setTimeout(() => {
        // 假设后端返回的中奖索引是0
        const index = 7
        // 调用stop停止旋转并传递中奖索引
        this.$refs.myLucky.stop(index)
      }, 1000)
    },
// 抽奖结束会触发end回调
 endCallback(prize) {
      console.log(prize)
      setTimeout(() => {
       ......
      }, 500)
    },
  • 具体参考地址
  1. https://100px.net/usage/vue.html
  2. https://blog.csdn.net/crazy_jialin/article/details/115613060

标签:src,vue,assets,LuckyDraw,require,九宫格,value,h5,png
From: https://www.cnblogs.com/mhl-blog/p/16917477.html

相关文章

  • h5判断手机摇晃
    代码如下:varcount=0;functionshakeFun(){//判断手机摇晃if(window.DeviceMotionEvent){varspeed=10;varx=y=z=lastX=lastY=......
  • 解决在Vue3中html2canvas图片跨域问题
    <divv-html="transformImg(textContent.policyInterpretation)"class="topicContent"></div>consttransformImg=(str)=>{constreplaceCallback=(m,......
  • vue八大生命周期
    vue.js生命周期的八大状态:1、beforeCreate(创建前):vue实例初始化之前调用此阶段为实例初始化之后,此时的数据观察和事件配置都还没有准备好,而此时的实例中的data和el还是und......
  • Vue3学习笔记(七)—— 状态管理、Vuex、Pinia
    一、状态管理1.1、什么是状态管理?理论上来说,每一个Vue组件实例都已经在“管理”它自己的响应式状态了。我们以一个简单的计数器组件为例:<scriptsetup>import{re......
  • vue的element ui使用多组radio
    需要实现的效果如下: 需求描述:有这样的三组radio,要实现:可以分别点击,互不干扰实现步骤:element代码如下:<row-wrapper><template>......
  • Vue plugin插件的使用
    前言本文主要介绍了vue中plugin插件的用法及其功能,pluginplugin用来为Vue添加全局功能,可以把通用性强的功能进行封装。定义plugin需要使用install方法。这个方法有......
  • VUE3 全局共享数据方案之一 (简单快速实现类似vuex)
    自定义封装单列模式!globalstate由于vue3的响应式系统本身可以脱离组件而存在,因此可以充分利用这一点,轻松制造多个全局响应式数据,并且通过和vuex一样通过某个模块指定......
  • H5 富文本快捷输入
    ✍记录一下功能富文本功能快捷键关键词效果......
  • 基于springboot和vue的IT内部电脑报修服务系统设计与实现-计算机毕业设计源码+LW文档
    it内部设备服务系统设计与实现摘要it内部设备服务系统将传统的网络服务方式与最新的互联网技术相结合,使用方便快捷,有利于设备维修部门规范管理,提高网络维修部门的工作效......
  • 关于echars在vue3中的使用
    根文件的配置<!--App.vue--><template><router-view></router-view></template><script>import*asechartsfrom'echarts'import{provide}from......