如何确定WindowsPhone7在XNA游戏中的定位?
类似于,但正在寻找一个在XNA游戏环境下有效的答案如何确定WindowsPhone7在XNA游戏中的定位?,xna,windows-phone-7,Xna,Windows Phone 7,类似于,但正在寻找一个在XNA游戏环境下有效的答案 如何确定设备是横向还是纵向?一般问题中给出的答案取决于PhoneApplicationPage中内置的功能。顺便说一句,您通常不会在WindowsPhone7上的XNA游戏环境中使用该类。来自Nick Gravelyn: 加速度计不再在XNA框架中。您可以通过以下步骤访问它: 添加对Microsoft.Devices.Sensors.dll的引用 添加“使用Microsoft.Devices.Sensors;”使用你的语句 连接事件并开始读取加
如何确定设备是横向还是纵向?一般问题中给出的答案取决于PhoneApplicationPage中内置的功能。顺便说一句,您通常不会在WindowsPhone7上的XNA游戏环境中使用该类。来自Nick Gravelyn: 加速度计不再在XNA框架中。您可以通过以下步骤访问它:
try
{
AccelerometerSensor.Default.ReadingChanged += Default_ReadingChanged;
AccelerometerSensor.Default.Start();
}
catch (AccelerometerStartFailedException)
{
}
void Default_ReadingChanged(object sender, AccelerometerReadingAsyncEventArgs e)
{
}
你可以走了。但请记住,加速度计不能与仿真器一起工作,因此没有设备就无法真正测试这一点。您确实需要该try/catch,因为Start将在模拟器中引发异常,因为它不支持加速计。以下是Shawn Hargreaves博客上的一篇文章 如果要在手机旋转时自动切换横向和纵向方向:
graphics.SupportedOrientations = DisplayOrientation.Portrait |
DisplayOrientation.LandscapeLeft |
DisplayOrientation.LandscapeRight;
在LandscapeLeft和LandscapeRight之间的切换可以自动处理,无需游戏的特殊帮助,因此默认情况下处于启用状态。但是在横向和纵向之间切换会改变backbuffer的尺寸(短而宽,高而薄),这很可能需要您调整屏幕布局。并不是所有的游戏都能处理这个问题(有些设计只有单向的),所以只有那些通过设置SupportedOrientations明确选择加入的游戏才能在横向和纵向之间进行动态切换。这似乎改变了这一点。为了连接到“读数已更改”,您必须创建一个加速计,然后启动它。所需代码可在MSDN上找到 它看起来像这样:
#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
#如果WINDOWS\u手机
加速度计;
尝试
{
加速计=新加速计();
Accelerator.ReadingChanged+=新事件处理程序(a_ReadingChanged);
加速度计。开始();
}
锁扣(加速计失效异常e)
{
}
...
}
无效a_读数已更改(对象发送器、加速计修订目标e)
{
//Windows 7电话仿真器不支持此功能
抛出新的NotImplementedException();
}
#恩迪夫
考虑到基于加速度计的iPhone游戏的数量,取消XNA的支持似乎是一个奇怪的选择。这是因为他们也需要在silverlight应用程序中公开它,所以他们不能让它依赖于XNA应用程序