如何使用setInterval方法实现一个变速大转盘
发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,这篇文章主要讲解了"如何使用setInterval方法实现一个变速大转盘",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"如何使用setInterval方
千家信息网最后更新 2025年01月19日如何使用setInterval方法实现一个变速大转盘
这篇文章主要讲解了"如何使用setInterval方法实现一个变速大转盘",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"如何使用setInterval方法实现一个变速大转盘"吧!
使用小程序来实现一个大转盘吧!大转盘都不陌生,开始抽奖,然后停止的位置就是获得的奖品。
实现方法:setInterval
先来实现一下匀速大转盘吧
先将转盘设计好,比如3 x 3 的大转盘,中间是个开始按钮;我这里设置的是背景颜色的变化,当抽奖到达某个位置时,这个位置的颜色发生变化;先贴一下我的ttml页面吧(不要在意我奇怪的配色~)// index.ttml顺便css也贴一下吧,看效果直接复制就好了嘛// index.ttss.box{ margin: 0 auto; width: 600rpx; display: flex; flex-wrap: wrap; border: 1px solid black;}.item{ width: 200rpx; height: 200rpx; line-height: 200rpx; text-align: center;} {{item}}
另起一行,只是换个位置贴js
先看data:games是转盘上要显示的内容,转盘的格式可以根据自己的需求自己来写,我这个就是最基本的。active用来记录旋转到了什么位置,start用来记录开始的位置
再来看全局定义的round和timer。round用来设置一个轨迹,相当于铺路啦,里面是要走的下标,刚好是外围一圈。timer是定时器
最后看begin方法吧
// index.jsconst round = [0,1,2,5,8,7,6,3,0];let timer ;Page({ data: { games:['$1','$2','$3','$4','开始','$5','$6','$7','$8'], active: 0, start: 0, }, onLoad: function (options) { }, beginLottery(){ this.begin(); }, // begin begin(){ let start = this.data.start; let random = Math.floor(Math.random()*9); let num = 0; timer = setInterval(() => { start++; start = start > 8 ? 0 : start; this.setData({ start, active: round[start] }) num++; if(num > 24 && this.data.active == random){// clearInterval(timer) } }, 70); }})
比较简单,然后实现变速,其实速度的改变就是旋转一圈时间的改变
我这里的设计是:每旋转两圈实现一次变速,每次变速的时间在上一次时间上+100s,在第五圈停止
//index.jsconst round = [0, 1, 2, 5, 8, 7, 6, 3, 0];let timer; // 定时器let num = 0; // 用来记录一共转了几次,方便判断转的圈数let start = 0; // 记录开始的位置下标let random = ''; // 记录停下来的随机数(下标)let time = 70; // 记录定时器的时间let count = 0; // 记录圈数,用来判断每2圈一次变速Page({ data: { games: ['$1', '$2', '$3', '$4', '开始', '$5', '$6', '$7', '$8'], active: 0, }, onLoad: function (options) {}, beginLottery() { this.begin1(); }, begin1() { if(num != 0){ // 防止用户重复点击 return } timer = setInterval(this.process, time); }, // 旋转的过程 process() { start = start + 1; if (start >= 8) { start = 0; // 当start = 8的时候,表示已经转过1圈了count+1 count = count + 1; } this.setData({ active: round[start] }) num = num + 1; // 实现两圈一次变速 if (num % 8 === 0 && count === 2) { count = 0; clearInterval(timer); time = time + 100; timer = setInterval(this.process, time); // 转了4圈,即将在第五圈停止 if (Math.floor(num / 8) === 4) { this.getRandom(); } } if (this.data.active === random) { clearInterval(timer); num = 0; random = ''; time = 70; count = 0; } }, getRandom(){ let n = Math.floor(Math.random() * 9); if(n == 4){ this.getRandom(); }else{ random = n return; } }})
示例代码是根据旋转的圈数来进行变速,也可以根据旋转一定的时间来实现变速,这样就需要使用setTimeout来实现。
感谢各位的阅读,以上就是"如何使用setInterval方法实现一个变速大转盘"的内容了,经过本文的学习后,相信大家对如何使用setInterval方法实现一个变速大转盘这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
转盘
方法
位置
时间
就是
下标
内容
定时器
学习
颜色
变化
设计
陌生
一行
个位
代码
全局
只是
奖品
思路
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
vc 时间服务器
jmx数据库监控
自己想学软件开发
网络安全出现问题图片
苏州智慧安全教育展馆软件开发
四川内江服务器管理虚拟主机
山东职业学院软件开发怎样
康桥软件开发
现代数据库大全
数据库对查询插入的功能是啥
网络安全素质教育2021版
java数据库怎么配置
金山区海航软件开发直销价格
维护网络安全内容建设管理
陌陌软件开发
苹果笔记本连接服务器出现问题
数据库建表type类型
金亚太网络技术怎么样
什么叫登陆服务器失败
常州通信网络技术常见问题
数据库管理技术的发展过程
qq上传服务器失败了
2018网络安全股票
学士论文数据库
服务器上的硬盘是sata接口吗
gepia数据库使用教程
自建sd-wan服务器
盛达网络技术开发公司
优化服务器是什么意思
手机软件开发如何创业