与此问题类似,但正在寻找适用于 XNA 游戏上下文的答案。
如何确定设备是横向还是纵向?一般问题中给出的答案依赖于 PhoneApplicationPage 中内置的功能。AFAIK,您通常不会在 Windows Phone 7 上的 XNA 游戏上下文中使用该类。
与此问题类似,但正在寻找适用于 XNA 游戏上下文的答案。
如何确定设备是横向还是纵向?一般问题中给出的答案依赖于 PhoneApplicationPage 中内置的功能。AFAIK,您通常不会在 Windows Phone 7 上的 XNA 游戏上下文中使用该类。
来自 Nick Gravelyn:http ://forums.xna.com/forums/p/49684/298915.aspx#298915 加速度计不再在 XNA 框架中。您可以通过以下步骤访问它:
尝试这个:
try
{
AccelerometerSensor.Default.ReadingChanged += Default_ReadingChanged;
AccelerometerSensor.Default.Start();
}
catch (AccelerometerStartFailedException)
{
}
像这样:
void Default_ReadingChanged(object sender, AccelerometerReadingAsyncEventArgs e)
{
}
你可以走了。但请记住,加速度计不适用于模拟器,因此没有设备就无法真正测试它。您确实需要 try/catch,因为 Start 将在模拟器中引发异常,因为它不支持加速度计。
这似乎改变了。为了挂钩“读数改变”,您必须创建一个加速度计,然后启动它。所需的代码可以在 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
这是来自 Shawn Hargreaves 博客的帖子
如果您想在手机旋转时自动在横向和纵向之间切换:
graphics.SupportedOrientations = DisplayOrientation.Portrait |
DisplayOrientation.LandscapeLeft |
DisplayOrientation.LandscapeRight;
LandscapeLeft 和 LandscapeRight 之间的切换可以自动处理,无需游戏的特殊帮助,因此默认启用。但是横向和纵向之间的切换会改变后台缓冲区的尺寸(短而宽与高而薄),这很可能需要您调整屏幕布局。并非所有游戏都能够处理此问题(并且某些设计仅在一种方式上有意义),因此只有通过设置 SupportedOrientations 明确选择加入的游戏才启用横向和纵向之间的动态切换。