「Mac畅玩鸿蒙与硬件36」UI互动应用篇13 - 数字滚动抽奖器

简介: 本篇将带你实现一个简单的数字滚动抽奖器。用户点击按钮后,屏幕上的数字会以滚动动画的形式随机变动,最终显示一个抽奖数字。这个项目展示了如何结合定时器、状态管理和动画实现一个有趣的互动应用。

本篇将带你实现一个简单的数字滚动抽奖器。用户点击按钮后,屏幕上的数字会以滚动动画的形式随机变动,最终显示一个抽奖数字。这个项目展示了如何结合定时器、状态管理和动画实现一个有趣的互动应用。

20241127_003802.gif


关键词
  • UI互动应用
  • 数字滚动
  • 动画效果
  • 状态管理
  • 用户交互

一、功能说明

数字滚动抽奖器应用允许用户点击按钮启动数字滚动动画,最终随机显示一个中奖号码。抽奖结果通过动画和随机数结合的方式呈现,增强了应用的趣味性。


二、所需组件

  • @Entry@Component 装饰器
  • Column 布局组件
  • Text 组件用于显示滚动数字
  • Button 组件用于用户交互
  • @State 修饰符用于状态管理
  • 定时器函数 setIntervalclearInterval

三、项目结构

  • 项目名称LotteryApp
  • 自定义组件名称LotteryPage
  • 代码文件LotteryPage.etsIndex.ets

四、代码实现

// 文件名:LotteryPage.ets

@Component
export struct LotteryPage {
   
  @State currentNumber: number = 0; // 当前显示的数字
  @State isRolling: boolean = false; // 是否正在滚动
  private intervalId: number | null = null; // 定时器 ID

  build() {
   
    Column({
    space: 20 }) {
    // 创建垂直布局容器
      // 显示当前数字
      Text(`${
     this.currentNumber}`)
        .fontSize(50)
        .fontWeight(FontWeight.Bold)
        .fontColor(this.isRolling ? Color.Gray : Color.Blue)
        .textAlign(TextAlign.Center)
        .margin({
    top: 30 });

      // 显示猫咪图片装饰
      Image($r('app.media.cat'))
        .width(85)
        .height(100)
        .borderRadius(5)
        .alignSelf(ItemAlign.Center);

      // 开始或停止抽奖按钮
      Button(this.isRolling ? '停止抽奖' : '开始抽奖')
        .onClick(() => {
   
          if (this.isRolling) {
   
            this.stopRolling();
          } else {
   
            this.startRolling();
          }
        })
        .fontSize(20)
        .backgroundColor(this.isRolling ? Color.Red : Color.Green)
        .fontColor(Color.White)
        .width('60%')
        .alignSelf(ItemAlign.Center);
    }
    .padding(20)
    .width('100%')
    .height('100%')
    .alignItems(HorizontalAlign.Center);
  }

  // 开始滚动的方法
  private startRolling() {
   
    this.isRolling = true;
    this.intervalId = setInterval(() => {
   
      this.currentNumber = Math.floor(Math.random() * 100); // 生成 0-99 的随机数
    }, 100); // 每 100 毫秒更新数字
  }

  // 停止滚动的方法
  private stopRolling() {
   
    this.isRolling = false;
    if (this.intervalId !== null) {
   
      clearInterval(this.intervalId);
      this.intervalId = null;
    }
  }
}
// 文件名:Index.ets

import {
    LotteryPage } from './LotteryPage';

@Entry
@Component
struct Index {
   
  build() {
   
    Column() {
   
      LotteryPage() // 调用抽奖页面
    }
    .padding(20)
  }
}

效果示例:用户点击“开始抽奖”按钮后,屏幕上的数字会快速滚动;点击“停止抽奖”按钮,滚动停止并显示一个随机数字作为中奖结果。

20241127_003802.gif


五、代码解读

  • 状态管理@State currentNumber@State isRolling 用于控制数字显示和滚动状态。
  • 滚动逻辑:通过 setInterval 实现快速更新 currentNumber,模拟滚动效果。
  • 动画效果:数字在滚动时使用灰色,停止滚动时使用蓝色,增强视觉效果。
  • 定时器控制clearInterval 确保滚动停止时清理定时器,避免资源泄漏。

六、优化建议

  1. 增加范围设置:允许用户设置随机数字的范围,例如 1-100 或 1-1000。
  2. 增加声音效果:滚动时添加背景音效,停止时播放获奖音效。
  3. 显示历史记录:记录每次抽奖的结果,提供用户参考。

七、相关知识点


小结

通过数字滚动抽奖器的实现,你学会了如何结合定时器和状态管理实现动态数字更新,并将其应用于有趣的互动场景中。此示例轻量实用,适合入门开发者实践。


下一篇预告

在下一篇「UI互动应用篇14 - 随机颜色变化器」中,我们将探索如何通过点击按钮实现界面背景的随机颜色变化,提升用户体验。


上一篇: 「Mac畅玩鸿蒙与硬件35」UI互动应用篇12 - 简易日历

下一篇: 「Mac畅玩鸿蒙与硬件37」UI互动应用篇14 - 随机颜色变化器


作者:SoraLuna
链接:https://www.nutpi.net/thread?topicId=318
來源:坚果派
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


目录
相关文章
|
16小时前
|
存储 UED
「Mac畅玩鸿蒙与硬件37」UI互动应用篇14 - 随机颜色变化器
本篇将带你实现一个随机颜色变化器应用。用户点击“随机颜色”按钮后,界面背景会随机变化为淡色系颜色,同时显示当前的颜色代码,页面还会展示一只猫咪图片作为装饰,提升趣味性。
50 36
「Mac畅玩鸿蒙与硬件37」UI互动应用篇14 - 随机颜色变化器
|
1天前
「Mac畅玩鸿蒙与硬件35」UI互动应用篇12 - 简易日历
本篇将带你实现一个简易日历应用,显示当前月份的日期,并支持选择特定日期的功能。用户可以通过点击日期高亮选中,还可以切换上下月份,体验动态界面的交互效果。
26 12
「Mac畅玩鸿蒙与硬件35」UI互动应用篇12 - 简易日历
|
4天前
|
存储 UED
「Mac畅玩鸿蒙与硬件33」UI互动应用篇10 - 数字猜谜游戏
本篇将带你实现一个简单的数字猜谜游戏。用户输入一个数字,应用会判断是否接近目标数字,并提供提示“高一点”或“低一点”,直到用户猜中目标数字。这个小游戏结合状态管理和用户交互,是一个入门级的互动应用示例。
34 7
「Mac畅玩鸿蒙与硬件33」UI互动应用篇10 - 数字猜谜游戏
|
7天前
|
UED
「Mac畅玩鸿蒙与硬件27」UI互动应用篇4 - 猫与灯的互动应用
本篇将带领你实现一个趣味十足的互动应用,用户点击按钮时猫会在一排灯之间移动,猫所在的位置灯会亮起(on),其余灯会熄灭(off)。应用会根据用户的操作动态更新灯光状态和文本提示当前亮灯的位置,是掌握状态管理和组件动态渲染的良好实践。
49 15
「Mac畅玩鸿蒙与硬件27」UI互动应用篇4 - 猫与灯的互动应用
|
1天前
|
存储
「Mac畅玩鸿蒙与硬件34」UI互动应用篇11 - 颜色选择器
本篇将带你实现一个颜色选择器应用。用户可以从预设颜色中选择,或者通过输入颜色代码自定义颜色来动态更改界面背景。该应用展示了如何结合用户输入、状态管理和界面动态更新的功能。
18 3
「Mac畅玩鸿蒙与硬件34」UI互动应用篇11 - 颜色选择器
|
5天前
「Mac畅玩鸿蒙与硬件32」UI互动应用篇9 - 番茄钟倒计时应用
本篇将带你实现一个番茄钟倒计时应用,用户可以设置专注时间和休息时间的时长,点击“开始专注”或“开始休息”按钮启动计时,应用会在倒计时结束时进行提醒。番茄钟应用对于管理时间、提升工作效率非常有帮助,并且还会加入猫咪图片作为界面装饰,让体验更加有趣。
53 8
「Mac畅玩鸿蒙与硬件32」UI互动应用篇9 - 番茄钟倒计时应用
|
6天前
|
UED
「Mac畅玩鸿蒙与硬件31」UI互动应用篇8 - 自定义评分星级组件
本篇将带你实现一个自定义评分星级组件,用户可以通过点击星星进行评分,并实时显示评分结果。为了让界面更具吸引力,我们还将添加一只小猫图片作为评分的背景装饰。
46 6
「Mac畅玩鸿蒙与硬件31」UI互动应用篇8 - 自定义评分星级组件
|
8天前
「Mac畅玩鸿蒙与硬件25」UI互动应用篇2 - 计时器应用实现
本篇将带领你实现一个实用的计时器应用,用户可以启动、暂停或重置计时器。该项目将涉及时间控制、状态管理以及按钮交互,是掌握鸿蒙应用开发的重要步骤。
47 7
「Mac畅玩鸿蒙与硬件25」UI互动应用篇2 - 计时器应用实现
|
7天前
「Mac畅玩鸿蒙与硬件26」UI互动应用篇3 - 倒计时和提醒功能实现
本篇将带领你实现一个倒计时和提醒功能的应用,用户可以设置倒计时时间并开始计时。当倒计时结束时,应用会显示提醒。该项目涉及时间控制、状态管理和用户交互,是学习鸿蒙应用开发的绝佳实践项目。
45 2
「Mac畅玩鸿蒙与硬件26」UI互动应用篇3 - 倒计时和提醒功能实现
|
8天前
|
UED
「Mac畅玩鸿蒙与硬件24」UI互动应用篇1 - 灯光控制小项目
本篇将带领你实现一个互动性十足的灯光控制小项目,用户可以通过点击按钮来控制灯光的开关。该项目将涉及状态管理、动态图片加载以及按钮交互,是学习鸿蒙应用开发的重要基础。
33 5
「Mac畅玩鸿蒙与硬件24」UI互动应用篇1 - 灯光控制小项目