2012-02-05 17 views
0

SLXNA加上加速度計是WP7上的一個不好的組合。我無法左右鎖定任何風景,因此屏幕會旋轉。我試圖用rendertarget2d來對付這個,但是這並不能百分之百地工作,因爲按鈕的點擊區域仍然翻轉180度。SLXNA plus Accelerometer在遊戲過程中導致屏幕旋轉,解決方案?

任何想法? 感謝 - ZS

+0

只是再次看了這個Q。只是爲了直觀看待事物,你是說你想將設備鎖定到LandscapeLeft/Landscape右側,以便在旋轉設備時不會翻轉?就我所知,旋轉/輸入由框架自動處理。只是扔了一個測試應用程序,一切工作盡我所知。 – Darkside 2012-07-16 15:30:18

+0

不,我只想將設備鎖定到LandscapeLeft。據我所知,這是不支持,因爲我後來發現。 – tamaslnagy 2012-07-21 20:27:39

回答

0

截至目前看來,這是SLXNA平臺缺少的功能/缺陷。沒有辦法強制屏幕成爲特定的橫向方向。它將繼續在OrientationLeft和OrientationRight之間翻轉。對於我設計的這個問題,有幾種解決方法,但沒有一種是理想的,它們都有其侷限性。迄今爲止我發現的最好的方法是在Microsoft.Phone.Controls命名空間中覆蓋以下功能

protected virtual void OnOrientationChanged(
OrientationChangedEventArgs e 
) 

。然後在裏面有一個變量來跟蹤方向的變化。然後,不要直接渲染到SpriteBatch渲染到Rendertarget,然後根據剛剛修改的變量旋轉它。現在這種方法有一個缺點,它很大:任何觸摸控件都不會翻轉。所以,當觸摸控制和按鈕沒有排隊時,你會遇到一堆奇怪的錯誤,但截至目前看來這是最好的解決方法。

0

你檢查中的Silverlight XAML的默認頁面方向與SilverXNA(SLXNA)Silverlight的網頁是所有3D內容的主機和XNA不具有控制權。

找到您網頁XAML的頭這條線(檢查每一頁)

SupportedOrientations="Portrait" Orientation="Portrait" 

值可以是:

  • 肖像
  • 景觀
  • PortraitOrLandscape

另外,如果你wan t閱讀當前頁面方向,則需要將Silverlight方向轉換爲XNA方向。

+0

不幸的是,在Silverlight中,您無法指定LandscapeLeft或LandscapeRight。我最終只是反轉屏幕,以保持它的方式,這是一個非常糟糕的解決方案。 – tamaslnagy 2012-04-04 21:03:03