В настоящее время ваша установка принимает спам-ввод ключа (удерживая клавишу). То, как я это делал в большинстве игр с вводом на основе событий, - это использование логического массива keydown[256]
, отображающего клавиатуру (индекс является значением ключа); все значения инициализированы до false
.
Когда клавиша нажата, вы устанавливаете соответствующий индекс на true
в методе keydown и в цикле игры / рендеринга вы вызываете gameCanvas.RenderTransform = new TranslateTransform(gcX, gcY);
в зависимости от того, какие клавиши в массиве true
. Вы устанавливаете значение ключа на false
, когда ключ освобождается в методе события keyrelease (я не уверен, что это такое в C #).
Таким образом, вы получите плавную прокрутку, и у вас не будет задержки при запуске.