在 WP8 720p 设备上运行的 XNA 应用程序(WP7 或 WP7.5 应用程序)将自动进行信箱处理,因此 480x800 BackBuffer 大小保持不变(我认为是为了兼容性)。
这很好,除了 XNA 兼容层中似乎存在错误。TouchPanel 报告因顶部信箱空白区域大小而偏离的触摸位置。
这有两个问题:
- 用户的触摸似乎使游戏玩法和菜单导航变得困难。
- 因为它在负方向上关闭,所以用户将根本无法触摸屏幕最底部的东西。
我尝试通过仅考虑 53 / 2 像素偏移来解决此问题(53 是缩放坐标中额外空间的总量,除以 2,因为它仅被一个信箱栏关闭 - 顶部的那个)。这确实纠正了触摸位置,但因为 TouchPanel 内部将负值钳制为 0,这意味着游戏顶部仍然存在死区(因为 -22 到 -1 应该转换为 0 到 22,但如果所有负输入值被限制为 0,然后信息丢失,负范围内的所有内容将始终转换为 22)。
有没有人遇到过这个问题并找到解决方法?
我什至尝试将 TouchPanel.DisplayHeight/Width 重置为设备的实际 720p 值,并且在下一帧更新时它以某种方式重置为 480x800。