WPF с использованием XNA, Keyboard.GetState (). GetPressedKeys () всегда пуст! - PullRequest
0 голосов
/ 04 декабря 2010

У меня есть модуль, написанный с использованием XNA, который опрашивает GamePad и клавиатуру в фоновом потоке и вызывает некоторые обратные вызовы. Нет класса игры вообще. Я хочу использовать этот модуль из приложения WPF, вызывая Dispatcher.BeginInvoke при обратном вызове и внося некоторые изменения на дисплее (который не содержит TextBox и т. Д.), Основываясь на параметрах обратных вызовов. Он отлично работает с GamePad, но массив Keyboard.GetState (). GetPressedKeys () всегда пуст! Я думаю, что это как-то связано с циклом сообщений WPF, перехватывающим события клавиатуры, прежде чем я смогу опрашивать их в XNA, или для xna нет ничего, чтобы установить фокус клавиатуры. Есть ли у вас какие-либо советы? Как передать состояние клавиатуры в XNA, чтобы мне не приходилось переписывать обработку клавиатуры с использованием классов WPF? спасибо

1 Ответ

0 голосов
/ 04 декабря 2010

Неважно, я решил это!Проблема была не в фокусе, а в потоке!Я выставил обратный вызов в классе опроса, и когда я хотел вызвать Keyboard.GetState (), я вызвал обратный вызов, который (в WPF) был вызовом Dispatcher.Invoke (() => poll.GetKeyboardState ()), так чтораз GetState () находился в том же потоке, что и элемент управления WPF, поэтому он работал !!!Hoorah!

...