如何确定Windows Phone 7在XNA游戏中的方向?
-
20-09-2019 - |
题
如同 这个问题, ,但正在寻找适用于 XNA 游戏的答案。
如何确定设备是横向还是纵向?一般问题中给出的答案依赖于 PhoneApplicationPage 中内置的功能。AFAIK,您通常不会在 Windows Phone 7 上的 XNA 游戏上下文中使用该类。
解决方案
来自尼克·格拉维林: http://forums.xna.com/forums/p/49684/298915.aspx#298915加速计不再包含在 XNA 框架中。您可以通过以下步骤访问它:
- 添加对 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)
{
}
你就可以走了。但请记住,加速度计不能与模拟器一起使用,因此没有设备就无法真正对其进行测试。您确实需要 try/catch,因为 Start 会在模拟器中引发异常,因为它不支持加速度计。
其他提示
此改变了它似乎。为了挂接到“读书改变了”你必须创建一个加速度计,然后再启动它。所需的代码可以在MSDN上找到。 检索加速度输入(Windows手机)
它看起来是这样的:
#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 明确选择加入的游戏才能启用横向和纵向之间的动态切换。
不隶属于 StackOverflow