xna - windows phone 7,xna,我如何更定期地对触摸屏进行采样

标签 xna windows-phone-7 touchscreen

好吧,显然 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/

相关文章:

image - 在 WP7 中的图像上写文字

Javascript 触摸屏事件,如鼠标滚轮 DOMMouseScroll

c# - XNA - 'isMouseVisible' 没有定义

C#/XNA 扩展设置实例属性

c# - 在 Windows Phone 7 中通过 http 流式传输使用 .pls 文件播放广播

c++ - Linux 上的 QTouchEvent 代替 QMouseEvent

python - 使用 OpenCV 补偿自动白平衡

c# - 学习单一游戏或 xna

c# - 有没有办法在 Monogame 中使用剪贴板?

sqlite - sqlite vs隔离存储(Windows Phone)