SLXNA plus Акселерометр, вызывающий вращение экрана во время игры, решения? - PullRequest
0 голосов
/ 05 февраля 2012

SLXNA плюс акселерометр - плохая комбинация на WP7. Я не могу заблокировать ни пейзаж, ни левый или правый, поэтому экран будет вращаться. Я попытался противостоять этому, используя rendertarget2d, но это не сработало на сто процентов, потому что области нажатия кнопок по-прежнему переворачиваются на 180 градусов.

Есть идеи? Спасибо -ZS

Ответы [ 2 ]

0 голосов
/ 11 апреля 2012

На данный момент кажется, что это отсутствующая функция / ошибка в платформе SLXNA. Нет способа заставить экран иметь определенную альбомную ориентацию. Он будет продолжать переключаться между OrientationLeft и OrientationRight. Я разработал несколько способов решения этой проблемы, но ни один из них не идеален, и у всех есть свои ограничения. Лучшее, что я нашел на данный момент, это переопределить следующую функцию

protected virtual void OnOrientationChanged(
OrientationChangedEventArgs e
)

в пространстве имен Microsoft.Phone.Controls. Затем поместите переменную внутрь, чтобы отслеживать изменения ориентации. Затем вместо рендеринга непосредственно в SpriteBatch рендеринг в Rendertarget , а затем поверните его в соответствии с переменной, которую вы только что изменили. У этого метода есть недостаток, и он большой: любые сенсорные элементы управления не переворачиваются. Таким образом, у вас будет куча странных ошибок с сенсорными элементами управления и кнопками, не выстраивающимися в линию, но на данный момент это, кажется, лучший обходной путь.

0 голосов
/ 06 февраля 2012

Вы проверили ориентацию страницы по умолчанию в XAML для Silverlight, как и для SilverXNA (SLXNA), страница Silverlight является хостом для всего 3D-контента, и XNA не имеет над ним контроля.

Найдите эту строку взаголовок вашей страницы XAML (проверьте для каждой страницы)

SupportedOrientations="Portrait" Orientation="Portrait"

Значения могут быть:

  • Portrait
  • Landscape
  • PortraitOrLandscape

Также, если вы хотите прочитать текущую ориентацию страницы, вам необходимо перевести ориентацию Silverlight в ориентацию XNA.

...