Как да ограничите честотата на действията на KeyDown

разработвам първата си игра в silverlight. Това е нещо като 2D лабиринт и движенията на потребителя върху платното се базират на събитието UserControl_KeyDown. Все още нямам никакъв gameloop. Но сега съм някак блокиран - трябва да огранича честотата на събитието UserControl_KeyDown или нещо подобно, защото имам нужда някои обекти в лабиринта да се движат по-бързо, отколкото играчът може. Предполагам, че мога да използвам gameloop по някакъв начин, но наистина не знам как и Google не помогна.. Надявам се, че можете да ми покажете начина, по който да направя това, наистина бих го оценил.


person Gabbo    schedule 04.10.2011    source източник


Отговори (1)


Можете да спестите времето, в което сте изпълнили командата си последния път, и да я изпълните само когато времевият интервал между сега и запазеното време е по-голям от определено време.

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
comment
Саша, благодаря за отговора, звучи много умно, ще опитам това. - person Gabbo; 04.10.2011
comment
страхотно, научих нова функция, той е в stackoverflow (донякъде съм новодошъл тук :) ) - person Gabbo; 05.10.2011