与this question类似,但正在寻找可在XNA游戏环境下工作的答案。如何在XNA游戏中确定Windows Phone 7的方向?
如何确定设备是横向还是纵向?在一般问题中给出的答案依赖于PhoneApplicationPage内置的功能。据我所知,你通常不会使用XNA游戏在Windows Phone 7
与this question类似,但正在寻找可在XNA游戏环境下工作的答案。如何在XNA游戏中确定Windows Phone 7的方向?
如何确定设备是横向还是纵向?在一般问题中给出的答案依赖于PhoneApplicationPage内置的功能。据我所知,你通常不会使用XNA游戏在Windows Phone 7
上下文从尼克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会在模拟器中抛出异常,因为它不支持加速度计。
这里的肖恩哈格里夫斯博客的一篇文章
如果你想既横向和纵向之间自动切换的手机旋转:LandscapeLeft之间
graphics.SupportedOrientations = DisplayOrientation.Portrait |
DisplayOrientation.LandscapeLeft |
DisplayOrientation.LandscapeRight;
交换和LandscapeRight可以在没有游戏特别帮助的情况下自动处理,因此默认情况下处于启用状态。但在横向和纵向之间切换会改变后缓冲器的尺寸(短而宽与高与低),这很可能会要求您调整屏幕布局。并非所有游戏都能够处理此问题(并且某些设计只能在一种方式上有意义),因此只有通过设置SupportedOrientations来显式选择加入的游戏才能在风景和肖像之间进行动态切换。
这看起来已经改变了。为了勾住'阅读改变'你必须创建一个加速度计,然后启动它。所需的代码可以在MSDN上找到。 Retrieving Accelerometer Input (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
鉴于基于加速计的iPhone游戏的数量,从XNA除去支持似乎是一个奇怪的选择。 – 2010-03-19 22:58:51
这是因为他们需要公开它的Silverlight应用程序,所以他们不能依赖于XNA应用程序 – 2010-03-23 00:03:09