ArkUI--抽奖

article/2025/7/14 0:03:54
摘要:本文展示了一个基于ArkUI的生肖抽奖应用实现。通过@State管理当前选中索引(n1)、各卡片中奖次数(nums)和生肖图片资源(pics)。点击抽奖按钮时,启动15次循环动画后随机停在0-5索引位置,并在对应卡片Badge上累计中奖次数。界面包含3×2网格展示生肖图片,选中卡片显示红色边框,底部统计各卡片中奖次数。组件销毁时自动清除定时器,确保资源释放。该实现展示了ArkUI的状态管理、ForEach循环渲染、定时器动画和Badge组件等核心功能。
@Entry
@Component
struct Index {@State n1: number = -1; // 当前抽中的索引@State nums: number[] = [0, 0, 0, 0, 0, 0]; // 每张卡片的中奖次数@State pics: Resource[] = [$r("app.media.shengxiao1"),$r("app.media.shengxiao2"),$r("app.media.shengxiao3"),$r("app.media.shengxiao4"),$r("app.media.shengxiao5"),$r("app.media.shengxiao6")];private timer: number = 0; // 抽奖动画计时器private counter: number = 0; // 动画计数器private finalIndex: number = 0; // 最终中奖索引build() {Column() {// 抽奖标题图片Image($r("app.media.choujiang")).width(300).margin(20)// 抽奖按钮Button('抽奖').fontSize(25).width(150).height(50).margin(10).onClick(() => {// 停止之前的动画clearInterval(this.timer);this.counter = 0;// 随机生成最终中奖索引 (0-5)this.finalIndex = Math.floor(Math.random() * 6);// 开始抽奖动画this.timer = setInterval(() => {// 循环高亮每个选项this.n1 = this.counter % 6;this.counter++;// 15次循环后停在最终位置并增加计数if (this.counter > 15) {clearInterval(this.timer);this.n1 = this.finalIndex;// 增加对应卡片的中奖次数let newNums = [...this.nums];newNums[this.finalIndex] += 1;this.nums = newNums;}}, 100);})Grid() {ForEach(this.pics, (item: Resource, index: number) => {GridItem() {Badge({count: this.nums[index],maxCount: 99,position: BadgePosition.RightTop,style: {badgeSize: 50,badgeColor: Color.Brown,fontSize: 30,color: Color.White}}) {// 生肖图片Image(item).width(120).height(120).objectFit(ImageFit.Fill).border({width: this.n1 === index ? 5 : 0,color: this.n1 === index ? Color.Red : Color.Transparent}).borderRadius(10)}}.padding(10)})}.columnsTemplate('1fr 1fr 1fr') // 3列.rowsTemplate('1fr 1fr')        // 2行.width('90%').height('50%')Row() {ForEach(this.nums, (count: number, index: number) => {Column() {Text(`卡片${index + 1}`).fontSize(18).margin(5)Text(`${count}次`).fontSize(20).fontColor(Color.Blue)}.margin(10)})}.justifyContent(FlexAlign.SpaceAround).width('100%').margin(20)}.width('100%').height('100%').justifyContent(FlexAlign.Center)}// 组件销毁时清除计时器aboutToDisappear() {clearInterval(this.timer);}
}


http://www.hkcw.cn/article/ZoEyFemAsc.shtml

相关文章

平台对比:澳洲电商增速放缓期,Kogan如何实现38%客户增长?

过去三年,全球电商经历了一场从“井喷”到“冷静”的转变。澳洲市场也不例外。根据Statista数据显示,2023年澳大利亚整体电商零售增长仅为3.8%,远低于前两年的两位数增长。在这样的背景下,本土电商平台Kogan却逆势上扬&#xff0c…

差分S参数-信号与电源完整性分析

差分S参数: 由于差分互连中使用差分信号传递信息,接收器最关心的是差分信号的质量,如果互连通道的S参数能直接反映出对差分信号的影响,对分析问题将方便得多。差分互连通道可以看成是一个四端口网络,激励源为单端信号,…

计算机一次取数过程分析

计算机一次取数过程分析 1 取址过程 CPU由运算器和控制器组成,其中控制器中的程序计数器(PC)保存的是下一条指令的虚拟地址,经过内存管理单元(MMU),将虚拟地址转换为物理地址,之后交给主存地址寄存器(MAR),从主存中取…

鸿蒙OS的5.0.1.120版本体验怎么样?

点击上方关注 “终端研发部” 设为“星标”,和你一起掌握更多数据库知识 越来越是好用了,之前是凑合能用,现在是大多能用。 我朋友的mate30PRO和PuraX一起用,新系统确实满足我90%以上的需求 一个系统适配一款机型,是要…

CPT302 Multi-Agent Systems 题型

Agent games Wumpus World 乌普斯世界 设定 环境:一个二维网格状的洞穴(cave),由多个房间(rooms)组成。 起点:智能体(agent)总是从左下角的 Room[1,1] 开始。 连接方式…

太阳诱电多层陶瓷电容器的优势和特点

基于电容器市场需求或将扩大的方向性战略所开展的产品研发 除多层陶瓷电容器外,电容器还包括电解电容器和薄膜电容器等类型。随着节能化、物联网化的进一步加速发展,可以预见高性能电容器的需求量将在中长期内有所增长。 多层陶瓷电容器对于实现电子设…

Chrome v131.0.6778.86 绿色便携版 下载

Google Chrome浏览器增强版,采用shuax便携式Dll劫持补丁加入原版打包而成, Chrome增强软件模块,强制实现flash插件支持,解除Adobe Flash Player地区不相容限制和移除警告提示,增强标签页功能。 百度网盘:ht…

PYTHON调用讯飞唤醒实现麦克风说话机器人离线唤醒

引言 语音唤醒技术是现代智能语音交互系统中的重要组成部分,它允许设备在待机状态下通过特定的唤醒词进入交互状态。本文将介绍如何使用Python结合讯飞语音SDK实现一个简单的语音唤醒系统。 技术背景 语音唤醒技术主要依赖于以下几个关键技术点: 声学…

做销售讲究接地气

你有没有遇到过这种情况?两个人聊了半天,你越说对方越皱眉,最后礼貌地说"我再考虑考虑"。其实不是产品不够好,而是没戳中对方心里那根弦。做销售最讲究的就是"接地气"。 和人打交道就像炒菜,火候…

ImBatch 7.6.3 中文版 - 高效图片批量处理工具

ImBatch是一款专业高效的图片批量处理工具。它提供强大的图像编辑功能,包括裁剪、尺寸调整、旋转等操作,并内置数十种专业工具,能满足各类复杂的图像处理需求。软件界面已全面中文化,操作更加便捷直观。 ImBatch下链接&#xff1…

Python+requests+pytest接口自动化测试框架的搭建(全)

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 框架的设计思路 首先要明确进行接口自动化需要的步骤,如下图所示: 然后逐步拆解需要完成的工作: 1)了解分析需求&…

C#定时器深度对比:System.Timers.Timer vs System.Threading.Timer性能实测与选型指南

本文通过真实基准测试揭秘两种常用定时器的性能差异,助你做出最佳选择 一、C#定时器全景概览 在C#生态中,不同定时器适用于不同场景。以下是主流定时器的核心特性对比: 定时器类型命名空间适用场景触发线程精度内存开销依赖框架System.Wind…

简单配置RHEL9.X

切换默认运行级别 将系统默认启动模式从多用户的图形界面调整为多用户的文本界面,适用于优化系统资源占用或进行远程服务器管理的场景。 注意:安装选择“带GUI的服务器”部分常用命令默认安装;如果选择“最小安装”时,部分常用命…

【运维实战】Linux 中su和sudo之间的区别以及如何配置sudo!

Linux 系统相比其他操作系统具有更高的安全性,其安全机制的核心之一在于用户管理策略和权限控制--普通用户默认无权执行任何系统级操作。 若普通用户需要进行系统级变更,必须通过su或sudo命令提权。 1.su与sudo的本质区别 su 要求直接共享 root 密码&…

基于Android的记录生活APP_springboot+vue

开发语言:Java框架:springboot AndroidJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7数据库工具:Navicat12开发软件:eclipse/myeclipse/ideaMaven包:Maven3.6 系统展示 APP登录 A…

2025年渗透测试面试题总结-匿名[校招]攻防研究员(应用安全)(题目+回答)

安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 匿名[校招]攻防研究员(应用安全) 基础部分 1. HTTP状态码 2. HTTP请求方法及作用 3. 网络分层及协议 OW…

区域未停留检测算法AI智能分析网关V4打造铁道/工厂/机场等场景应用方案

一、背景 在工业生产、公共场所管理等场景中,特定区域的人员/物体停留时间管控关乎作业效率与安全。传统监控系统仅能录像存证,无法主动分析停留行为。AI智能分析网关V4的区域未停留检测功能,依托智能算法实现实时监测与异常告警&#xff0c…

第Y5周:yolo.py文件解读

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 本次任务:将YOLOv5s网络模型中的C3模块按照下图方式修改形成C2模块,并将C2模块插入第2层与第3层之间,且跑通YOLOv5s。 任务…

无人机桥梁3D建模、巡检、检测的航线规划

无人机桥梁3D建模、巡检、检测的航线规划 无人机在3D建模、巡检和检测任务中的航线规划存在显著差异,主要体现在飞行高度、航线模式、精度要求和传感器配置等方面。以下是三者的详细对比分析: 1. 核心目标差异 任务类型主要目标典型应用场景3D建模 生成…

【FlashRAG】本地部署与demo运行(一)

FlashRAG 简介 FlashRAG 是一种高效检索增强生成(Retrieval-Augmented Generation, RAG)技术,旨在优化大规模语言模型(LLMs)的推理性能,尤其在处理长上下文或复杂查询时。其核心特点是结合了快速检索与动态…