Я разрабатываю простую настольную игру, где моя игровая доска представлена в виде DrawableGameComponent. В методе обновления доски я проверяю ввод мыши, чтобы определить, какое поле на доске было щелкнуто. Проблема, с которой я сталкиваюсь, заключается в том, что щелчок мышью регистрируется только один раз каждые 5-6 щелчков.
Код щелчка мыши является базовым:
public override void Update(GameTime gameTime)
{
MouseState mouseState = Mouse.GetState();
Point mouseCell = new Point(-1, -1);
if (mouseState.LeftButton == ButtonState.Pressed && previousMouseState.LeftButton == ButtonState.Released)
{
mouseCell = new Point(mouseState.X, mouseState.Y);
}
// cell calc ...
previousMouseState = mouseState;
base.Update(gameTime);
}
В Game.cs я просто добавляю свою доску в коллекцию компонентов.
Кто-нибудь знает, что мне здесь не хватает?
РЕДАКТИРОВАТЬ: На самом деле, это не просто мышь, ввод с клавиатуры также не работает должным образом, поэтому я, вероятно, испортил реализацию DrawableGameComponent, хотя я понятия не имею, как.
РЕДАКТИРОВАТЬ2: Здесь нашли несколько людей: http://forums.create.msdn.com/forums/p/23752/128804.aspx и здесь: http://forums.create.msdn.com/forums/t/71524.aspx, имеющих очень похожие проблемы.
После неудачной отладки я отключил DrawableGameComponent и реализовал ручные вызовы LoadContent / Update / Draw и поместил весь входной сбор в game.cs. Работает как шарм.
Однако, если у кого-то есть какое-либо объяснение, что могло пойти не так (похоже, DrawableGameComponent каким-то образом закупоривает ввод), я бы очень хотел знать.