我有點寫一個小遊戲引擎 - 純粹是爲了理解這些內部工作是如何實現的。我目前不想混淆OpenGL或DirectX,所以我堅持使用GDI +和WinForms的所有東西進行控制。兩次連續的KeyDown事件之間的延時延遲
顯然,我需要處理輸入。更具體地說,鍵盤事件。然而,這帶來了一個問題:
protected override void OnKeyDown(KeyEventArgs e)
{
Trace.WriteLine(string.Format("KD {0:hh:MM:ss.fff} {1}",
DateTime.Now, e.KeyCode));
}
此代碼(即使在鍵盤小程序的控制面板中設置最短的重複延時)yeilds如下:
KD 10:02:18.318 Right
KD 10:02:18.570 Right
KD 10:02:18.598 Right
KD 10:02:18.639 Right
KD 10:02:18.667 Right
KD 10:02:18.701 Right
正如你所看到的,有0.25秒。前兩個事件之間的延遲。這導致屏幕上的物體運動緩慢,顯然:它首先稍微向右移動,然後暫停一個明顯的時刻,然後繼續。
我該如何解決該問題?這可以在純WinForms中完成嗎?或者我應該使用DirectInput(或者現在的其他什麼是Kosher方式?)路由?
這很噁心這個問題在Google搜索結果中出現的速度有多快。 – 2010-02-26 08:28:43