【发布时间】:2015-05-23 11:06:07
【问题描述】:
试图让西蒙说游戏作为我的学期项目,问题是当颜色变化时我不能在颜色之间添加延迟, 即我想添加一个延迟,以便当一个框颜色发生变化时,大约 3~4 秒后下一个框颜色发生变化,但问题是 当我将 Sleep() 放入我的 for 循环时,系统暂停对于整体给出的数量,然后显示所有同时更改的颜色,而不是一个一个....
任何帮助,这是我在单击游戏的开始按钮时调用的函数。如何解决?
void flash()
{
srand(time(NULL));
int x;
for (int i = 5; i > 0;i--)
{
x = rand() % 4;
if (x == 0)
{
button1->BackColor = System::Drawing::Color::Blue;
}
else if (x == 1)
{
button2->BackColor = System::Drawing::Color::Blue;
}
else if (x == 2)
{
button3->BackColor = System::Drawing::Color::Blue;
}
else if (x == 3)
{
button4->BackColor = System::Drawing::Color::Blue;
}
Sleep(500);
}
}
P.s 我试图在 if 语句中设置睡眠,但这也不起作用,请问有什么帮助吗?
【问题讨论】:
-
您需要以某种方式刷新视图。需要有关您正在使用的 UI 框架的更多信息。
-
@Nattrass:只是格式很差 - Sleep 实际上在 for 循环内。
-
Refresh() 每次更改后的按钮控件,但这不是做这些事情的正确方法。 UI 将冻结。启动一个任务,休眠并将颜色更改发送到 ui 线程。顺便说一句...混合 NET 和 CRT 的理由?
-
@MarcoA。 .好吧,我正在使用 C++ 开发 Windows 窗体应用程序,而我刚刚编程,第一学期,这是一个项目。 + 我是个菜鸟 ._.
-
@AdrianoRepetti,所以我应该在每次更改后添加 Refresh() 按钮以刷新 UI 吗?我使用 CRT 的原因是我们的老师告诉我们在上面制作游戏,使用已经预先制作的按钮。
标签: windows winforms c++-cli delay