SLXNA加上加速度计导致屏幕在游戏过程中旋转,解决方案

本文关键字:过程中 游戏 旋转 解决方案 屏幕 加速度 计导 SLXNA | 更新日期: 2023-09-27 18:22:37

SLXNA加上加速度计在WP7上是一个糟糕的组合。我不能向左或向右锁定横向,这样屏幕就会旋转。我试图使用rendertarget2d来解决这个问题,但这并没有百分之百地奏效,因为按钮的点击区域仍然翻转了180度。

有什么想法吗?谢谢-ZS

SLXNA加上加速度计导致屏幕在游戏过程中旋转,解决方案

您是否检查了silverlight XAML中的默认页面方向,就像SilverXNA(SLXNA)一样,silverlight页面是所有3D内容的主机,XNA无法控制它。

在页面XAML的标题中找到这一行(检查每一页)

SupportedOrientations="Portrait" Orientation="Portrait"

值可以是:

  • 纵向
  • 景观
  • 肖像或风景

此外,如果您想读取当前页面方向,则需要将Silverlight方向转换为XNA方向。

到目前为止,这似乎是SLXNA平台缺少的功能/错误。没有办法强制屏幕为特定的横向方向。它将继续在OrientationLeft和OrientationRight之间切换。我设计了几个解决这个问题的方法,但没有一个是理想的,而且都有局限性。到目前为止,我发现最好的是覆盖以下功能

protected virtual void OnOrientationChanged(
OrientationChangedEventArgs e
)

Microsoft.Phone.Controls命名空间中。然后在里面有一个变量来跟踪方向的变化。然后,不是直接渲染到SpriteBatch,而是渲染到Rendertarget,然后根据刚才修改的变量旋转它。现在,这种方法有一个缺点,它是一个很大的缺点:任何触摸控件都不会翻转。因此,在触摸控制和按钮不对齐的情况下,你会遇到一堆奇怪的错误,但目前这似乎是最好的解决方法。