2011-10-04 45 views
1

我正在用silverlight开发我的第一款游戏。这就像2D迷宫,用户在画布上的移动是基于UserControl_KeyDown事件。我还没有任何gameloop。但现在我有点困难 - 我需要限制UserControl_KeyDown事件的频率或某事,因为我需要迷宫中的某些对象比玩家能够更快地移动。我想我可以使用gameloop莫名其妙,但我真的不知道如何和谷歌没有帮助..我希望你能告诉我如何做到这一点,我真的很感激这一点。如何限制KeyDown动作频率

回答

1

您可以节省您最后一次执行命令的时间,并且只有在现在与保存的时间之间的TimeSpan大于一定的时间时才执行它。

private DateTime _LastExecution = DateTime.MinValue; 

public void UserControl_KeyDown(object sender, EventArgs ea) { 
    if ((DateTime.Now - _LastExecution).TotalMilliSeconds > 500) { 
     /* do you stuff */ 
     _LastExecution = DateTime.Now; 
    } 
} 
+0

Sascha,感谢您的回复,听起来真的很聪明,我会试试这个。 – Gabbo

+0

它对我很好。谢谢 – Gabbo

+0

然后,也许你可以接受的答案;) – Sascha