Windows Phone 7, XNA, как я могу сэмплировать сенсорный экран более регулярно - PullRequest
5 голосов
/ 12 августа 2010

хорошо, так что, очевидно, игры xna могут работать только со скоростью 30 кадров в секунду, что обидно, потому что наша игра на iphone выглядела намного лучше при 60 ...

во всяком случае, потому что единственный способ, которым вы можете получитьинформация о состоянии сенсорного экрана позволяет узнать его текущее состояние, фактически это означает, что вы можете опробовать сенсорный экран только при 30 кадрах в секунду.

, даже если наша игра должна работать со скоростью 30 кадров в секунду, есть ли способ подняться выше?разрешение выборки с сенсорного экрана?может через обратные вызовы?или доступ к списку событий касания с отметками времени?

Ответы [ 2 ]

2 голосов
/ 12 августа 2010

Функция, которую вы ищете: TouchPanel.GetState.Просто вызвать эту функцию на частоте 60 Гц.

Чтобы получить 60 Гц, вы можете установить Game.TargetElapsedTime на 1/60 секунды.Это даст вам два обновления для каждого розыгрыша (согласно сообщению Шона Харгривза здесь ), при условии, что вы используете VSyncing со скоростью 30FPS.

Если вы все еще хотите, чтобы обновления состояния игры выполнялись со скоростью 30FPS.(просто сенсорный ввод при 60FPS), тогда вы можете поместить эти обновления в другой поток.Запустите обновление, выполняющее этот поток при первом вызове Game.Update, и дождитесь его завершения во втором вызове и т. Д.

(Следует отметить, что обычно ввод XNA должен выполняться наосновной поток ( источник ). Я предполагаю, что это относится к телефону и сенсорному вводу.)

В качестве альтернативы вы можете полностью заменить синхронизацию класса Game (вызывая GraphicsDevice.Present себя).Это не легко сделать, но это возможно.Хорошее место для начала - взглянуть на класс Game в Reflector.

(Отказ от ответственности: я еще не пробовал никакой реальной разработки на базе телефона, поэтому могут быть некоторые, связанные с телефономГочась, о котором я не знаю.)

0 голосов
/ 12 августа 2010

Частота дискретизации 30 кадров в секунду установлена ​​из соображений производительности.

Даже если бы вы могли найти способ запрашивать касания чаще, вы все равно не могли бы обновлять пользовательский интерфейс с большей скоростью, поэтому я не уверен, какую выгоду вы получите.

Прежде чем тратить слишком много времени на поиск решения, я протестировал бы на реальном устройстве, чтобы увидеть, насколько приемлемыми являются 30fps.

...