如何在XNA游戏中确定Windows Phone 7的方向?

时间:2010-03-18 21:45:56

标签: xna windows-phone-7

this question类似,但寻找可在XNA游戏环境中使用的答案。

如何确定设备是横向还是纵向?一般问题中给出的答案依赖于PhoneApplicationPage中内置的功能。 AFAIK,您通常不会在Windows Phone 7上的XNA游戏环境中使用该类。

3 个答案:

答案 0 :(得分:3)

来自Nick Gravelyn: http://forums.xna.com/forums/p/49684/298915.aspx#298915 Accelerometer不再位于XNA Framework中。您可以通过以下步骤访问它:

  1. 添加对Microsoft.Devices.Sensors.dll
  2. 的引用
  3. 使用Microsoft.Devices.Sensors添加';'你的使用陈述。
  4. 连接事件并开始阅读加速度计:
  5. 试试这个:

    try  
    {  
        AccelerometerSensor.Default.ReadingChanged += Default_ReadingChanged;  
        AccelerometerSensor.Default.Start();  
    }  
    catch (AccelerometerStartFailedException)  
    {  
    }
    
    1. 添加事件处理程序本身:
    2. 像这样:

      void Default_ReadingChanged(object sender, AccelerometerReadingAsyncEventArgs e)  
      {  
      }
      

      你很高兴。但请记住,加速度计不能与仿真器一起使用,因此没有设备就无法真正测试它。你确实需要try / catch,因为Start会在模拟器中抛出异常,因为它不支持加速度计。

答案 1 :(得分:1)

这似乎已经改变了。为了连接'读取已更改',您必须创建一个加速度计,然后启动它。所需的代码可以在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

答案 2 :(得分:0)