XNA ゲームで Windows Phone 7 の向きを確認するにはどうすればよいですか?
-
20-09-2019 - |
質問
に似ている この質問, 、しかし、XNA ゲームのコンテキストで機能する答えを探しています。
デバイスが横向きか縦向きかを判断するにはどうすればよいですか?一般的な質問で与えられた答えは、PhoneApplicationPage に組み込まれている機能に依存しています。私の知る限り、通常は Windows Phone 7 上の XNA ゲームのコンテキスト内でそのクラスを使用することはありません。
解決
ニック・グラベリンより: http://forums.xna.com/forums/p/49684/298915.aspx#298915加速度センサーは XNA Framework に含まれなくなりました。次の手順でアクセスできます。
- Microsoft.Devices.Sensors.dll への参照を追加します。
- 'microsoft.devices.sensors;'を使用して追加します。 'ステートメントを使用してください。
- イベントをフックして加速度センサーの読み取りを開始します。
これを試して:
try
{
AccelerometerSensor.Default.ReadingChanged += Default_ReadingChanged;
AccelerometerSensor.Default.Start();
}
catch (AccelerometerStartFailedException)
{
}
- イベント ハンドラー自体を追加します。
このような:
void Default_ReadingChanged(object sender, AccelerometerReadingAsyncEventArgs e)
{
}
大丈夫です。ただし、加速度センサーはエミュレーターでは機能しないため、デバイスなしではこれを実際にテストする方法がないことに注意してください。Start は加速度センサーをサポートしていないため、エミュレーターで例外をスローするため、try/catch が必要です。
他のヒント
これは、それはそう変更されました。フックするためには、あなたが加速度計を作成する必要が「読書変更」、そして、それを起動します。必要なコードは、MSDNで見つけることができます。 加速度計入力の取得(Windows Phoneの)の
これは次のようになります
#if WINDOWS_PHONE
Accelerometer accelerometer;
try
{
accelerometer = new Accelerometer();
accelerometer.ReadingChanged += new EventHandler<AccelerometerReadingEventArgs>(a_ReadingChanged);
accelerometer.Start();
}
catch (AccelerometerFailedException e)
{
}
...
}
void a_ReadingChanged(object sender, AccelerometerReadingEventArgs e)
{
//this function is not supported by the window 7 phone emulator
throw new NotImplementedException();
}
#endif
ここでショーンハーグリーブスブログからの投稿があります。
<のhref = "http://blogs.msdn.com/b/shawnhar/archive/2010/07/12/orientation-and-rotation-on-windows-phone.aspx?utm_source=twitterfeed&utm_medium=twitter" rel = "nofollowをnoreferrer"> http://blogs.msdn.com/b/shawnhar/archive/2010/07/12/orientation-and-rotation-on-windows-phone.aspx?utm_source=twitterfeed&utm_medium=twitter
あなたは電話が回転すると、自動的に両方の風景や肖像画の向きを切り替えたい場合:
graphics.SupportedOrientations = DisplayOrientation.Portrait |
DisplayOrientation.LandscapeLeft |
DisplayOrientation.LandscapeRight;
LandscapeLeftとLandscapeRightの切り替えは、ゲームから特別な助けを借りて自動的に処理することができるので、デフォルトで有効になっています。しかし、風景やポートレートの切り替えはバックバッファの大きさを変える(ワイド短期および-対トールおよび薄型)で最も可能性の高いあなたは、画面のレイアウトを調整するために必要となります、。いないすべてのゲームは、これを処理することができるようになります(といくつかのデザインは、一方向のみアップ意味をなさない)、風景や肖像画の間にそれほど動的に切り替えるだけ明示的にオプトインSupportedOrientationsを設定することによって、ゲームのために有効になります。