当我按下以下任意一个键时,我要移动的对象移动一个方格然后冻结。当我松开钥匙时,屏幕解冻,物体移动了很多。 为什么会这样?我该如何解决这个问题? 我正在使用WPF:
private void MainWindow_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.W)
{
playerService.move(Player.id, PlayerService.Direction.UP);
}
if (e.Key == Key.S)
{
playerService.move(Player.id, PlayerService.Direction.DOWN);
}
if (e.Key == Key.A)
{
playerService.move(Player.id, PlayerService.Direction.LEFT);
}
if (e.Key == Key.D)
{
playerService.move(Player.id, PlayerService.Direction.RIGHT);
}
}
编辑:我正在使用以下事件进行绘制。如何控制我阻止UI线程的这个问题?
CompositionTarget.Rendering += new EventHandler(Draw);
答案 0 :(得分:2)
这是因为你在UI线程中阻塞了。我知道这是.NET,但引用了我对Java中类似问题的另一个答案。
<强>更新强>
我建议调查这个项目并确定他们如何处理重要事件。
http://www.codeproject.com/KB/WPF/GrandPrix.aspx
这是一款使用WPF编写的赛车游戏。