You need to enable JavaScript to run this app. 如何使用C# Timer定时器实现定时切换ASCII文本的动画效果
优惠活动
大模型
产品
解决方案
定价
更多

如何使用C# Timer定时器实现定时切换ASCII文本的动画效果

实现方案

核心逻辑很简单,你现有1秒触发一次的Timer已经满足基础需求,只需要调整触发事件的逻辑即可:

  • 提前定义好原始ASCII文本和切换后ASCII文本两个变量
  • 用现有计数器timerPlayerOneAnimation的奇偶值判断当前要显示的文本:奇数次触发(对应第1、3、5...秒)显示切换后的文本,偶数次触发(对应第2、4、6...秒)切回原始文本
  • 控制台输出不要换行,每次覆盖上一行内容就能实现动画效果,避免刷屏

完整修改代码

// 提前定义两个文本,替换成你自己的ASCII内容即可
private const string OriginalAscii = "[ 站立 ]";
private const string ChangedAscii = "[ 跳跃 ]";
private int timerPlayerOneAnimation = 0;

public void TimePassed()
{
    // 1秒触发一次,默认AutoReset=true会循环触发
    Timer t1 = new Timer(1000);
    t1.Elapsed += Timer_Elapsed;
    t1.Start();
    Console.ReadKey();
    t1.Stop();
    // 停止后恢复光标显示,避免后续输出异常
    Console.CursorVisible = true;
}

public void Timer_Elapsed(object sender, ElapsedEventArgs e)
{
    timerPlayerOneAnimation++;
    // 把光标移到当前行开头,覆盖输出
    Console.SetCursorPosition(0, Console.CursorTop);
    // 奇数秒显示切换后文本,偶数秒显示原始文本
    string showText = timerPlayerOneAnimation % 2 == 1 ? ChangedAscii : OriginalAscii;
    // 输出后补空格清除可能残留的上一次文本的多余字符
    Console.Write(showText.PadRight(Console.WindowWidth - 1));
}

额外说明

如果你的ASCII文本是多行内容,只需要在输出前把Console.CursorTop向上移动和文本行数相等的数值即可,其余逻辑完全通用。


内容的提问来源于stack exchange,提问作者Felipe Hernández Bescós

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 10:24:04