2016-09-29 102 views
1

在我的UWP MonoGame应用程序中,所有击键都由鼠标输入延迟。它有两个作用:由鼠标引起的键盘输入延迟

1)当按住任何键时,输入在物理释放后继续。当我停止快速移动鼠标时,这会结束。

2)当我按下某个键时,快速移动鼠标时,直到我停止移动鼠标时才接收输入。

这是发生较晚的事件。

window.KeyDown += CoreWindow_KeyDown; 
+1

没有代码就很困难,但是我发现:当启用输入法编辑器(IME)时,应用程序不会收到此事件。 https://msdn.microsoft.com/en-in/windows.ui.core.corewindow.keydown或看看这个:http://stackoverflow.com/questions/28421867/how-do-i-handle-keydown-事件在-的WinRT-APP-XAML - 和 - C-其中-具有-A-网页视图 –

回答

1

这是由于传递给ProcessEvents的Windows :: UI :: Core :: CoreProcessEventsOption标志导致输入事件积压。快速鼠标输入将比事件队列更快地填充事件队列,当队列变满时,新事件将被丢弃。

coreWindow->Dispatcher->ProcessEvents(Windows::UI::Core::CoreProcessEventsOption::ProcessOneIfPresent); 

为实时输入传递更适当的标志,例如ProcessAllIfPresent。