【发布时间】:2016-09-03 05:19:12
【问题描述】:
我需要一些帮助来减慢计时器内的 while 循环。我正在制作一个平台游戏,并希望一个图片框(块)来回移动,我已经成功了。然而,这个区块移动得如此之快,以至于它让其他一切都滞后了。任何帮助将不胜感激!
private void timer2_Tick(object sender, EventArgs e)
{
while (block.Left > (ClientSize.Width-ClientSize.Width))
{
block.Left -= 1;
if (block.Left == (ClientSize.Width - ClientSize.Width))
{
break;
}
}
while (block.Right < ClientSize.Width)
{
block.Left += 1;
if (block.Right == ClientSize.Width)
{
break;
}
}
}
}
【问题讨论】:
-
您可以使用
Thread.Sleep(1000)或Task.Delay来注入延迟 -
有类似你的问题:This would probably help
-
摆脱 while 循环,因此单个计时器滴答会将块移动一个增量。需要大于 1,你需要一个 velocity 变量。
-
线程确实减慢了图片框的速度,但我无法使用此解决方案移动我的主角。我正在寻找一种方法来进行较慢的连续运动,而不会停在两侧。
-
@HansPassant ,我该怎么做?我对 c# 很陌生,完全不确定如何从该解决方案开始。谢谢!
标签: c# timer while-loop picturebox slowdown