好吧,显然 xna 游戏只能以 30fps 的速度运行,这是一种耻辱,因为我们在 iphone 上的游戏在 60 帧时看起来好多了……
无论如何,因为获取有关触摸屏状态信息的唯一方法是获取其当前状态,这实际上意味着您只能以 30 fps 的速度对触摸屏进行采样。
即使我们的游戏必须以 30fps 运行,有没有办法从触摸屏上获得更高分辨率的采样?也许通过回调?或者通过访问带有时间戳的触摸事件列表?
最佳答案
您要找的函数是 TouchPanel.GetState
.在 60Hz 下调用这个函数很简单。
要获得 60Hz,您可以设置 Game.TargetElapsedTime
到 1/60 秒。假设您以 30FPS 进行 VSyncing,这将为每一次绘制提供两次更新(根据 Shawn Hargreaves' post here)。
如果您仍然希望游戏状态更新以 30FPS 运行(仅以 60FPS 进行触摸输入),那么您可以将这些更新放在不同的线程上。在第一次调用 Game.Update
时开始在该线程上进行更新,并等待它在第二个完成,依此类推。
(您应该注意,通常 XNA 输入必须在主线程( source )上完成。我假设这适用于电话和触摸输入。)
或者,您可以更换 Game
类(class)的时间完全由你自己决定(你自己调用 GraphicsDevice.Present
)。这并不容易,但这是可能的。一个很好的起点是查看 Game
反射器中的类。
(免责声明:我还没有尝试过任何实际的基于电话的开发,所以可能有一些我不知道的与电话相关的问题。)
关于xna - windows phone 7,xna,我如何更定期地对触摸屏进行采样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3464341/