当前位置: 首页 > news >正文

微信小程序之九宫格抽奖

1.实现效果

九宫格

2. 实现步骤

话不多说,直接上代码

/**index.wxml*/
<view class="table-list flex fcc fwrap"><block wx:for="{{tableList}}" wx:key="id"><view class="table-item btn fcc {{isTurnOver?'':'grayscale'}}" wx:if="{{item.type=='btn'}}" bind:tap="onPrizeClick">{{item.name}}</view><view class="table-item fcc {{item.isSelected?'selected':''}}" wx:else>{{item.name}}</view></block>
</view>
import { showTextToast } from '../../utils/util';// pages/turnTable/index.js
Page({/*** 页面的初始数据*/data: {tableList: [{ id: '1', type: 'prize', name: '奖品1', isSelected: false },{ id: '2', type: 'prize', name: '奖品2', isSelected: false },{ id: '3', type: 'prize', name: '奖品3', isSelected: false },{ id: '4', type: 'prize', name: '奖品8', isSelected: false },{ id: '5', type: 'btn', name: '抽奖', isSelected: false },{ id: '6', type: 'prize', name: '奖品4', isSelected: false },{ id: '7', type: 'prize', name: '奖品7', isSelected: false },{ id: '8', type: 'prize', name: '奖品6', isSelected: false },{ id: '9', type: 'prize', name: '奖品5', isSelected: false },],isTurnOver: true, //抽奖状态,是否旋转完(九宫格)},/*** 生命周期函数--监听页面加载*/onLoad(options) {},/*** 生命周期函数--监听页面初次渲染完成*/onReady() {},/*** 生命周期函数--监听页面显示*/onShow() {},/****************************************** 九宫格抽奖 *******************************/onPrizeClick() {//如果不在抽奖状态中,则执行抽奖旋转动画if (this.data.isTurnOver) {this.setData({isTurnOver: false,});// 随机奖品效果const rand = (m, n) => {return Math.ceil(Math.random() * (n - m + 1) + m - 1);};let prizeId = rand(1, 8);this.lottery(prizeId);} else {showTextToast('请勿重复点击');}},// 抽奖旋转动画方法lottery(prize_id) {console.log('中奖ID:' + prize_id);/** 数组的长度就是最多所转的圈数,最后一圈会转到中奖后的位置* 数组里面的数字表示从一个奖品跳到另一个奖品所需要的时间* 数字越小速度越快* 想要修改圈数和速度的,更改数组个数和大小即可*/// let num_interval_arr = [90, 80, 70, 60, 50, 50, 50, 100, 150, 250];let num_interval_arr = [90, 80, 70, 60, 50, 50, 250];// 旋转的总次数let sum_rotate = num_interval_arr.length;// 每一圈所需要的时间let interval = 0;num_interval_arr.forEach((delay, index) => {setTimeout(() => {this.rotateCircle(delay, index + 1, sum_rotate, prize_id);}, interval);//因为每一圈转完所用的时间是不一样的,所以要做一个叠加操作interval += delay * 8;});},/**** @param {*} delay 表示一个奖品跳到另一个奖品所需要的时间* @param {*} index 表示执行到第几圈* @param {*} sum_rotate 表示旋转的总圈数* @param {*} prize_id 中奖的id号*/rotateCircle(delay, index, sum_rotate, prize_id) {// console.log(index)let _this = this;/** 页面中奖项的实际数组下标* 0  1  2* 3     5* 6  7  8* 所以得出转圈的执行顺序数组为 ↓*/let order_arr = [0, 1, 2, 5, 8, 7, 6, 3];// 页面奖品总数组let tableList = this.data.tableList;// 如果转到最后一圈,把数组截取到奖品项的位置if (index == sum_rotate) {order_arr.splice(prize_id);}console.log(order_arr);for (let i = 0; i < order_arr.length; i++) {setTimeout(() => {// 清理掉选中的状态tableList.forEach((e) => {e.isSelected = false;});// 执行到第几个就改变它的选中状态tableList[order_arr[i]].isSelected = true;// 更新状态_this.setData({tableList: tableList,});// 如果转到最后一圈且转完了,把抽奖状态改为已经转完了if (index == sum_rotate && i == order_arr.length - 1) {_this.setData({isTurnOver: true,});}}, delay * i);}},
});
.table-list {width: 100%;box-sizing: border-box;.table-item {width: 200rpx;height: 200rpx;margin-bottom: 10rpx;background-color: orange;color: #fff;border:5rpx solid snow;}.table-item.btn {background-color: gold;}.table-item.selected {background-color: orangered;}.table-item.turn {background-color: goldenrod;}

相关文章:

微信小程序之九宫格抽奖

1.实现效果 2. 实现步骤 话不多说&#xff0c;直接上代码 /**index.wxml*/ <view class"table-list flex fcc fwrap"><block wx:for"{{tableList}}" wx:key"id"><view class"table-item btn fcc {{isTurnOver?:grayscale…...

车牌检测识别功能实现(pyqt)

在本专题前面相关博客中已经讲述了 pyqt + yolo + lprnet 实现的车牌检测识别功能。带qt界面的。 本博文将结合前面训练好的模型来实现车牌的检测与识别。并用pyqt实现界面。最终通过检测车牌检测识别功能。 1)、通过pyqt5设计界面 ui文件如下: <?xml version="1…...

工业派-配置Intel神经计算棒二代(NCS2)

最近两天在工业派ubuntu16.04上配置了Intel神经计算棒二代——Intel Neural Compute Stick&#xff0c;配置过程之艰辛我都不想说了&#xff0c;实在是太折磨人。不过历尽千辛万苦&#xff0c;总算让计算棒可以在工业派ubuntu16.04系统上跑了&#xff0c;还是蛮欣慰的。 注&…...

深度学习中常见的九种交叉验证方法汇总

目录 1. K折交叉验证&#xff08;K-fold cross-validation&#xff09; 2. 分层K折交叉验证&#xff08;Stratified K-fold cross-validation&#xff09; 3. 时间序列交叉验证&#xff08;Time Series Split&#xff09; 4. 留一交叉验证&#xff08;Leave-One-Out Cross-…...

企业建网站流程

企业建网站是一个复杂而繁琐的过程&#xff0c;需要根据企业的需求和目标进行规划、设计、开发和运营。以下是企业建网站的一般流程&#xff0c;主要包括以下几个步骤&#xff1a; 第一步&#xff1a;需求分析 企业建网站的第一步是进行需求分析。这个过程需要与企业负责人和相…...

Laravel通过phpSpreadsheet合并excel

背景 最近有一个需求,需要将所有excel文件的sheet合并到一个文件。 目前我们处理表格使用的是xlswriter这个插件,对于数据量比较大的话非常好用。...

CTF网络安全大赛web题目:just_sqli

这道题目是bugku的web题目 题目的 描  述: KosenCTF{} 原文链接&#xff1a; CTF网络安全大赛web题目&#xff1a;just_sqli - 红客网-网络安全与渗透技术 题目Web源代码&#xff1a; <?php$user NULL; $is_admin 0;if (isset($_GET["source"])) {highlig…...

Java入门基础学习笔记27——生成随机数

Random的使用&#xff1a;生成随机数。 随机数应用&#xff1a; 随机点名&#xff1a; 年会抽奖&#xff1a; 猜数字游戏&#xff1a; 密码学。 查看API文档&#xff1a; package cn.ensource.random;import java.util.Random;public class RandomDemo1 {public static voi…...

EasyImage2.0 图床源码

EasyImage2.0 是一个简单图床的源码&#xff0c;它支持以下功能&#xff1a; 1. API接口 2. 登录后才能上传图片 3. 设置图片质量 4. 压缩图片大小 5. 添加文字或图片水印 6. 设定图片的宽度和高度 7. 将上传的图片转换为指定的格式 8. 限制上传图片的最小宽度和高度 …...

人工智能创新领衔,Android系统如虎添翼:2024 Google I/O 大会深度解析

人工智能创新领衔&#xff0c;Android系统如虎添翼&#xff1a;2024 Google I/O 大会深度解析 2024年5月14日举行的Google I/O大会&#xff0c;犹如一场精彩的科技盛宴&#xff0c;吸引了全球的目光。大会上&#xff0c;谷歌发布了一系列重磅产品和技术更新&#xff0c;展现了…...

下单制造fpc的工艺参数

FPC工艺简介 - 百度文库 (baidu.com) FPC工艺参数 - 豆丁网 (docin.com) FPC柔性线路板的主要参数.ppt (book118.com) 捷多邦&#xff1a; 华秋&#xff1a; 背胶&#xff1a; FPC板背胶是可以粘接在光滑表面的一种薄型胶带&#xff0c;可以在狭小以及光滑的表面上用来提供高…...

位拆分与运算

描述 题目描述&#xff1a; 现在输入了一个压缩的16位数据&#xff0c;其实际上包含了四个数据[3:0][7:4][11:8][15:12], 现在请按照sel选择输出四个数据的相加结果,并输出valid_out信号&#xff08;在不输出时候拉低&#xff09; 0: 不输出且只有此时的输入有…...

windows11目标文件夹访问被拒绝-将安全信息应用到以下对象时发生错误

将安全性信息应用到以下对象时发生错误”解决办法 要夺取所有权时&#xff0c;点“安全”添加用户并允许所有权限后点击“应用”&#xff0c; 一直“无法保存对。。。&#xff08;文件夹名&#xff09;权限所在的更改。拒绝访问”啊 必须先点击“高级”&#xff0c;把“允许父项…...

C#thread线程传参数更新UI的文本框

C#线程的用法有几个不同的地方&#xff1a; 1、怎么启动线程&#xff1f; 2、是不是需要传入参数&#xff1f; 3、是不是要调用到UI中的控件&#xff0c;并对其进行更新&#xff1f; 关于启动线程&#xff0c;这里一个示例是在form中启动&#xff1a; 定义一个private:sta…...

基于Vue和uni-app的增强型单选ccRadioView组件开发

标题&#xff1a;基于Vue和uni-app的增强单选组件ccRadioView的设计与实现 摘要&#xff1a;本文将详细介绍如何使用Vue和uni-app构建一个简单、好用且通用的单选框组件ccRadioView。该组件提供了单选列表的功能&#xff0c;并支持反向传值&#xff0c;方便开发者快速实现单选…...

信息系统项目管理师0602:项目立项管理 — 历年考题(详细分析与讲解)

点击查看专栏目录 1、2017年11月第31题 题干: 项目经理小李依据当前技术发展趋势和所掌握的技术能否支撑该项目的开发,进行可行性研究。小李进行的可行性研究属于( )。 选项: A. 经济可行性分析 B. 技术可行性分析 C. 运行环境可行性分析 D. 其他方面的可行性分析 答案…...

vue2 中使用audio播放音频

<audio controls ref"audioPlayer" style"width:800px;"><source :src"obj.audioUrl" /></audio> data() {return {obj: {audioUrl: require(../../../../public/audio/video.wav)}}}, 有个地方一定要注意一下. 如果不写req…...

一键追爆款,GPT一键改文‌‍‬⁣⁡​⁤⁢​⁢⁡⁣‬‍‌​​‬ ​‍⁤‬ ‬⁡⁡⁡‍‌‬⁡⁡⁢‬⁤⁢⁢⁤​‍‌​​‬ ​⁣‌,绘唐3,绘唐工具

ai画影满足你的制作要求 一键追爆款&#xff0c;GPT一键改文 入口工具 AI推文小说&漫画解说&解压混剪 人物定义&#xff0c;角色定义&#xff0c;lora转换&#xff0c;模型转换&#xff0c;可视化参考满足 一键追爆款 一键挂机生成&#xff0c;效果更精彩&#xff…...

在C#中编写递归函数时,为了避免无限递归

在C#中编写递归函数时&#xff0c;为了避免无限递归&#xff08;也称为栈溢出&#xff09;&#xff0c;你需要确保递归调用有一个明确的终止条件。这个终止条件通常基于一个或多个参数&#xff0c;当这些参数满足某个特定条件时&#xff0c;递归就会停止并返回结果。 以下是一…...

css层叠样式表——基础css面试题

1、css样式来源有哪些&#xff1f; 內联样式-<a style"color:red"></a>内部样式-<style></style>外部样式-写在独立.css文件中的浏览器用户自定义样式浏览器默认样式 2、样式优先级问题 不同级别下&#xff1a; !important作为style属性…...

Java 语言特性(面试系列2)

一、SQL 基础 1. 复杂查询 &#xff08;1&#xff09;连接查询&#xff08;JOIN&#xff09; 内连接&#xff08;INNER JOIN&#xff09;&#xff1a;返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波&#xff1a;可以用来解决所提出的地质任务的波&#xff1b;干扰波&#xff1a;所有妨碍辨认、追踪有效波的其他波。 地震勘探中&#xff0c;有效波和干扰波是相对的。例如&#xff0c;在反射波…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间&#xff0c; 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点&#xff0c;不需要开启数据库闪回。…...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室&#xff08;Algorithms, Machines, and People Lab&#xff09;开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目&#xff0c;8个月后成为Apache顶级项目&#xff0c;速度之快足见过人之处&…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销&#xff0c;平衡网络负载&#xff0c;延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

VB.net复制Ntag213卡写入UID

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会&#xff0c;其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具&#xff0c;对过去十年 WWDC 主题演讲内容进行了系统化分析&#xff0c;形成了这份…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例&#xff1a;使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例&#xff1a;使用OpenAI GPT-3进…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程&#xff0c;并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令&#xff0c;把数据流转换成Message&#xff0c;状态转变流程是&#xff1a;State::Created 》 St…...