我有什么时间选择
本文关键字:选择 时间 什么 | 更新日期: 2023-09-27 18:25:54
我正在XNA中制作一个TextBox控件,并且没有访问GameTime
类的权限。目前,我正在尝试模拟闪烁的文本光标插入符号,并已成功使用以下代码:
int deltaTickCount = Environment.TickCount - previousTickCount;
if (deltaTickCount < CursorBlinkRate && Selected)
{
spriteBatch.Draw(emptyPixel, new Rectangle(caretLocation, Rectangle.Y + 1, caretWidth, caretHeight), Color.Black);
}
else if (deltaTickCount > CursorBlinkRate * 2)
{
previousTickCount = Environment.TickCount;
}
但是,我对使用Environment.TickCount
有点谨慎。如果计算机运行足够长的时间,当勾号计数超过其整数大小时,程序不会最终崩溃或产生不可预测的行为吗?
有人知道Windows的功能吗?我想它会使用系统时钟。这会是一个更合适的解决方案吗?我想他们用的是从毫秒到秒的总毫秒数,而不是刻度计数,但我不确定。
感谢阅读。
我通常在很多情况下使用系统诊断计时器。
这是一个非常强大的工具,它为你创建了一个计时器,有很多很好的控制。
using System.Diagnostics;
Stopwatch timer = new Stopwatch();
然后使用内置控件:
timer.Start();
if(timer.elapsedMilliseconds() > ...)
{ }
timer.Reset();
等等。。。
这将允许您重置计时器?
当Evnironment.TickCount滚动时,deltaTickCount将为负数,所以您知道它已经发生了。计算结果变为:
if (deltaTickCount < 0)
deltaTickCount = int.MaxValue - previousTickCount + Environment.TickCount;
不必担心整数溢出时会发生什么,只需更改为:
int deltaTickCount =
Environment.TickCount > previousTickCount
? Environment.TickCount - previousTickCount
: CursorBlinkRate * 3;