You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让millis()实现的定时弹窗消息在屏幕停留更久?

解决消息停留时间过短的问题

我来帮你搞定这个问题!你的代码现在的核心问题是:仅在定时器触发的那一帧绘制文本,也就是每4秒只在一瞬间显示消息,之后因为timer被重置,后续所有帧都不会再绘制内容,导致消息一闪而过,用户完全来不及阅读。

问题根源拆解

你当前的逻辑是:只有当millis() - timer >= 4000时才执行绘制操作,绘制完成后立刻重置timer,这意味着消息只会在每4秒的那个时间点出现一帧,之后就消失了——对于人眼来说,这和“闪一下”没区别。

修复方案

我们需要把内容存储、显示状态控制和绘制逻辑拆分开,让消息能持续显示一段足够用户阅读的时间,具体步骤如下:

  1. 新增状态变量:用来记录当前要显示的内容、显示状态和计时

    // 存储当前要显示的评论和评分
    String currentReview = "";
    String currentRating = "";
    // 标记是否正在显示消息
    boolean isDisplaying = false;
    // 记录消息开始显示的时间(控制显示时长)
    long displayTimer = 0;
    // 消息持续显示的时长(比如设为3000毫秒=3秒,可按需调整)
    final long DISPLAY_DURATION = 3000;
    // 原有的消息切换间隔(4秒)
    long timer = 0;
    final long SWITCH_INTERVAL = 4000;
    
  2. 修改定时器逻辑:只负责更新要显示的内容,以及启动显示计时

    // 检查是否到了切换消息的时间
    if (millis() - timer >= SWITCH_INTERVAL) {
        // 匹配对应的评论和评分(用循环替代多个else if,更简洁易扩展)
        for (int i = 0; i < rev_film1.length; i++) {
            if (user11.equals(rev_film1[i])) {
                currentReview = user11;
                currentRating = rat_film1[i] + " / 10";
                break;
            }
        }
        // 启动显示状态,记录开始时间
        isDisplaying = true;
        displayTimer = millis();
        // 重置切换定时器
        timer = millis();
    }
    
    // 检查消息是否显示超时,超时则关闭显示
    if (isDisplaying && millis() - displayTimer >= DISPLAY_DURATION) {
        isDisplaying = false;
        currentReview = "";
        currentRating = "";
    }
    
  3. 独立绘制逻辑:在每帧都会执行的绘制代码里(比如draw()方法),只要isDisplaying为true就绘制消息

    // 这部分要放在每帧都会运行的绘制流程里
    if (isDisplaying) {
        app.text(currentReview, 15, 490);
        app.text(currentRating, 100, 550);
    }
    

优化点说明

  • 用循环替代了原来的多个else if,以后新增评论条目时,不用再手动加判断分支,代码扩展性更好。
  • DISPLAY_DURATION是消息持续显示的时间,你可以根据内容长度调整(比如内容较长就设为5000毫秒=5秒)。
  • 现在的逻辑是:每4秒触发一次消息更新,然后消息持续显示3秒,之后消失,等待下一个4秒周期再次显示——完美解决了“看不到”的问题。

内容的提问来源于stack exchange,提问作者user3157072

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:33:08