Я разрабатываю свою первую игру в Silverlight. Это что-то вроде двухмерного лабиринта, а движения пользователя по холсту основаны на событии UserControl_KeyDown. У меня пока нет геймлупа. Но теперь я немного застрял - мне нужно ограничить частоту события UserControl_KeyDown или что-то в этом роде, потому что мне нужно, чтобы некоторые объекты в лабиринте двигались быстрее, чем игрок. Я полагаю, что могу каким-то образом использовать gameloop, но я действительно не знаю, как это сделать, и Google не помог. Надеюсь, вы могли бы показать мне, как это сделать, я был бы очень признателен за это.
Как ограничить частоту действий 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;
}
}
person
Sascha
schedule
04.10.2011
Саша, спасибо за ответ, звучит очень умно, попробую.
- person Gabbo; 04.10.2011
отлично, я узнал новую функцию, он находится в stackoverflow (я здесь новичок :))
- person Gabbo; 05.10.2011