2010-03-18 76 views

回答

3

上下文從尼克Gravelyn內的類:http://forums.xna.com/forums/p/49684/298915.aspx#298915 加速度計是不能在XNA框架了。您可以通過以下步驟訪問:

  1. 增加提及Microsoft.Devices.Sensors.dll
  2. 添加「使用Microsoft.Devices.Sensors;」到你的使用陳述。
  3. 掛鉤一個事件並開始讀取加速度計:

嘗試這種情況:

try 
{ 
    AccelerometerSensor.Default.ReadingChanged += Default_ReadingChanged; 
    AccelerometerSensor.Default.Start(); 
} 
catch (AccelerometerStartFailedException) 
{ 
} 
  • 添加事件處理程序本身:
  • 像這樣:

    void Default_ReadingChanged(object sender, AccelerometerReadingAsyncEventArgs e) 
    { 
    } 
    

    你很好走。但請記住,加速度計不適用於仿真器,所以如果沒有設備,就無法真正測試。您確實需要try/catch,因爲Start會在模擬器中拋出異常,因爲它不支持加速度計。

    +1

    鑑於基於加速計的iPhone遊戲的數量,從XNA除去支持似乎是一個奇怪的選擇。 – 2010-03-19 22:58:51

    +0

    這是因爲他們需要公開它的Silverlight應用程序,所以他們不能依賴於XNA應用程序 – 2010-03-23 00:03:09

    0

    這裏的肖恩哈格里夫斯博客的一篇文章

    http://blogs.msdn.com/b/shawnhar/archive/2010/07/12/orientation-and-rotation-on-windows-phone.aspx?utm_source=twitterfeed&utm_medium=twitter

    如果你想既橫向和縱向之間自動切換的手機旋轉:LandscapeLeft之間

    graphics.SupportedOrientations = DisplayOrientation.Portrait | 
               DisplayOrientation.LandscapeLeft | 
               DisplayOrientation.LandscapeRight; 
    

    交換和LandscapeRight可以在沒有遊戲特別幫助的情況下自動處理,因此默認情況下處於啓用狀態。但在橫向和縱向之間切換會改變後緩衝器的尺寸(短而寬與高與低),這很可能會要求您調整屏幕布局。並非所有遊戲都能夠處理此問題(並且某些設計只能在一種方式上有意義),因此只有通過設置SupportedOrientations來顯式選擇加入的遊戲才能在風景和肖像之間進行動態切換。

    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 
    
    相關問題