Monogame XAML Сбросить CoreWindow?

Эй,

У меня проблема. Я прохожу все последние тесты, которые мне нужно было сделать для завершения игры, но теперь я столкнулся с проблемой. Всякий раз, когда я инициализирую игру, удерживая игру в портретной ориентации, игра переключается на альбомную, но Window.Current.CoreWindow не обновляется. Таким образом, шаблон Xaml создает окно на основе параметров книжной ориентации, а не параметров альбомной ориентации. Как я могу изменить CoreWindow или обновить его до того, как вся моя игра будет инициализирована?

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

Заранее спасибо.


person MrME    schedule 06.10.2013    source источник


Ответы (1)


CoreWindow не будет обновляться самостоятельно. Он будет обновляться только внутри вас Update(). Поэтому, если вы хотите обработать изменения в CoreWindow до того, как вы нажмете часть Initializing, вам нужно обработать их самостоятельно.

_coreWindow = Window.Current.CoreWindow;

// Create the game.
_game = XamlGame<Main>.Create("", _coreWindow, this);

_coreWindow.Activate();
_coreWindow.Dispatcher.ProcessEvents(CoreProcessEventsOption.ProcessAllIfPresent);

Здесь вы видите, что я создаю свою игру текущим CoreWindow. После того, как конструктор моей игры готов, я вручную проверяю и обрабатываю любые изменения CoreWindow, которые могли произойти за это время (в основном изменения ориентации), и обрабатываю их так, чтобы при инициализации моей игры она работала в правильном полном ландшафтном разрешении. .

Возможно, это не самое чистое решение, но в моем случае оно работает.

person MrME    schedule 08.10.2013