美文网首页
九宫格抽奖逻辑

九宫格抽奖逻辑

作者: 王果果 | 来源:发表于2021-12-06 14:30 被阅读0次

九宫格抽奖

  • 1.cardList 为循环的奖品列表
  • 2.it.name为奖品列表中中奖奖品的字段
  • 3.根据active判断给选中项添加不同的类名
  • 4.需要在cardList 列表中添加中间按钮this.cardList.splice(4, 0, 按钮);
// 抽奖
    lotteryFn() {
      // 取出中奖奖品的对应的下标
      let cIndex = this.cardList.findIndex(
        (it) => it == it.name
      );
      // 如果没有 return
      if (cIndex == -1) {
        return;
      }
      // console.log("中奖奖品索引", cIndex);
      // 奖品排序数组
      let sort = [0, 1, 2, 5, 8, 7, 6, 3];
      let length = 8;
      // 确定cIndex在sort中的位置
      let turnPlus = sort.findIndex((it) => it == cIndex);
      turnPlus = turnPlus < 5 ? turnPlus + length : turnPlus;
      // 多走的间隔 以最后一次的时间递减   最后一次走3秒走完最后的减速
      let totalTime = 3000;
      let splitTime = ~~(totalTime / turnPlus);
      // 大于 5 小于 8
      let turn = ~~Math.random() * (9 - 5) + 5;
      let turnStart = 0;
      // 样式下一个
      const turnStyle = () => {
        this.cardList[sort[this.start]].active = 0;
        this.start++;
        if (this.start == length) {
          this.start = 0;
        }
        this.cardList[sort[this.start]].active = 1;
      };
      const clearStyle = () => {
        this.cardList = this.cardList.map((item) => {
          item.active = 0;
          return item;
        });
        this.cardList[0].active = 1;
        this.start = 0;
      };
      // 转圈,先均速转5到8圈,然后再越来越慢走5个定位到中奖的元素
      // 从头开始转
      clearStyle();
      const turnTime = setInterval(() => {
        turnStart++;
        turnStyle();
        if (turnStart == turn * length) {
          clearInterval(turnTime);
          // 越来越慢5个
          // 100 200 400 800 1600
          for (let i = 1; i < turnPlus + 1; i++) {
            setTimeout(
              () => {
                turnStyle();
                if (i == turnPlus) {
                  this.$nextTick(() => {
                    setTimeout(() => {
                      // 中奖之后的逻辑
                    }, 300);
                  });
                }
              },
              splitTime * i,
              i
            );
          }
        }
      }, 100);
    },

相关文章

  • 九宫格抽奖逻辑

    九宫格抽奖 1.cardList 为循环的奖品列表 2.it.name为奖品列表中中奖奖品的字段 3.根据acti...

  • 抽奖逻辑

    抽奖ER图.drawio

  • mpvue封装九宫格抽奖组件

    最近用mpvue做小程序,有一个需求是做九宫格抽奖。因此参考了一篇文章从而封装了一个九宫格抽奖组件,可以直接拿来用...

  • 九宫格积分抽奖 可自定义大小(3*3、3*4、4*4...)可指

    九宫格积分抽奖 可自定义大小(3*3、3*4、4*4...)可指定抽奖结果 可指定运行方向 抽奖的内容可以是图片 ...

  • Android 9宫格抽奖 不是类似PPT那种样子

    参考文献 Android超简单实现九宫格抽奖 代码 9宫格抽奖Demo 需求描述 需要做一个抽奖的效果,网上搜索了...

  • 小程序实现大转盘,九宫格抽奖,带跑马灯效果

    基本实现功能 1,小程序仿天猫超市大转盘 2,九宫格转盘抽奖 3,积分抽奖 4,抽到的积分随机生成 5,抽奖结果可...

  • HTML九宫格抽奖

    在很多平台上可能会涉及到抽奖活动,下面就是提供了一个抽奖的demo,实现九宫格轮转抽奖。 效果如下: 使用时可以直...

  • vue九宫格抽奖功能

    vue九宫格抽奖 页面结构 样式 思路:点击开始抽奖,调用转动的方法,如果达到转动次数要求,且转到中奖位置,则停止...

  • 抽奖的逻辑

    看到广场上很多人在简书的抽奖活动中抽中了1万加成卡。今天我很幸运,第一反应不是高兴,而是截图,这或许是一个素材。 ...

  • JavaScript 实现九宫格抽奖

    九格宫抽奖相信大家都玩过,今天就用 JavaScript 写个九宫格抽奖玩玩。让中奖不再是梦! 1.预览效果 效果...

网友评论

      本文标题:九宫格抽奖逻辑

      本文链接:https://www.haomeiwen.com/subject/ylngxrtx.html