Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

vue版本的插件在手机安卓浏览器上奖品数量过多的话频繁设置奖品列表会导致页面卡顿4-5秒后才开始抽奖(老虎机) #535

Open
Song19939334056 opened this issue Jan 17, 2025 · 0 comments

Comments

@Song19939334056
Copy link

Song19939334056 commented Jan 17, 2025

提问模板
你当前是什么框架(必填):[email protected]

你使用的是哪个包(必填):vue

你使用插件的版本(必填):"@lucky-canvas/vue": "latest",

当前是什么环境(uni-app 和 taro 必填):手机浏览器

当前你使用的是哪个抽奖类型(必填):老虎机

详细描述你的bug:
vue版本的插件在手机安卓浏览器上奖品数量过多的话频繁设置奖品列表会导致页面卡顿4-5秒后才开始抽奖
老虎机的奖品是人名用来抽奖用的,总共54个人 共3列 每列18个人 每次抽奖三列中各抽一人然后在下一次抽奖的时候去除掉这个人也就是下一次每列17个人 这样会频繁设置奖品列表导致canvas重绘 在pc端浏览器一切都很正常 这样的在手机浏览器里面的话是不是就需要用到uniapp的那个插件库了(还没尝试)

问题代码(重要):

// 代码开始, 别再放歪了行吗
    initName() {
        // 去除已经中奖人员
        const newLIst = [];
        const names = [];
        for (let i = 0; i < this.prizes.length; i++) {
          if (this.hasNameList.indexOf(i) === -1) {
            newLIst.push(this.prizes[i]);
          } else {
            names.push(this.prizes[i].fonts[0].text);
          }
        }
        if (names.length > 0) {
          this.name_select.push(names);
        }
        if (this.hasNameList.length > 0) {
          this.prizes = newLIst.filter((item) => item).sort(() => Math.random() - 0.5);
        }
      // 设置下一轮的参与抽奖的人员
      this.slots[0].order = [];
      this.slots[1].order = [];
      this.slots[2].order = [];
      for (let i = 0; i < this.prizes.length / 3; i++) {
        this.slots[0].order.push(i);
        this.slots[1].order.push(i + this.prizes.length / 3);
        this.slots[2].order.push(i + (this.prizes.length / 3) * 2);
      }
      this.slots.map((item) => {
        // item.speed = 28-35随机数
        item.speed = Math.floor(Math.random()*(30-28)+28);
      });
    },
    start() { // 点击开始抽奖
      this.luckyShow = true
      if (this.status === "running" || this.status === 'end') {
        return;
      }
      this.status = "running";
      this.initName(); // 调用initName的方法重新设置参与人员
      this.$refs.myLucky.play();
    },
// 代码结束

复现网址:http://www.songzz.cn/
代码:cj.zip

@Song19939334056 Song19939334056 changed the title vue版本的插件在手机安卓浏览器上奖品数量过多的话频繁设置奖品列表会导致页面卡顿4-5秒后才开始抽奖 vue版本的插件在手机安卓浏览器上奖品数量过多的话频繁设置奖品列表会导致页面卡顿4-5秒后才开始抽奖(老虎机) Jan 17, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant