Как ограничить частоту действий KeyDown - PullRequest
1 голос
/ 04 октября 2011

Я разрабатываю свою первую игру в Silverlight.Это что-то вроде двухмерного лабиринта, и перемещения пользователя по холсту основаны на событии UserControl_KeyDown.У меня еще нет геймплея.Но теперь я немного застрял - мне нужно ограничить частоту события UserControl_KeyDown или чего-то еще, потому что мне нужно, чтобы некоторые объекты в лабиринте двигались быстрее, чем игрок.Я полагаю, что я могу каким-то образом использовать gameloop, но я действительно не знаю, как, и Google не помог. Я надеюсь, что вы могли бы показать мне, как это сделать, я очень ценю это.

1 Ответ

1 голос
/ 04 октября 2011

Вы можете сохранить время выполнения команды в последний раз и выполнять ее только в том случае, если интервал времени между текущим и сохраненным временем больше определенной суммы, если время.

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;
    }
}
...