在iPhone上处理多点触控

时间:2012-02-14 19:13:48

标签: ios opengl-es input multi-touch

我正在使用OpenGL制作iPhone游戏。当我开始编写游戏控件的界面时,我遇到了一个问题。我有四个按钮(左,右,攻击,跳跃),我需要能够同时按下。我需要的是一个函数touchesStation(只有touchesBegin,Moved和End)。我需要一个能够返回当前屏幕上所有手指的功能(与当前阶段无关),但这些功能仅在我开始按下时,当我移动手指或抬起手指时返回...没有当手指停留在原位时,按下按钮的功能。

我尝试使用touchesBegin,touchesMoved和touchesEnd编写代码,但是一个函数返回的手指列表与其他函数的顺序不同,所以它会搞砸一切,多点触控变得不可能。

理想的功能会返回当前屏幕上的所有手指,然后我可以遍历所有手指,检查它们的位置是否与某个按钮的位置匹配,然后激活该按钮。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

您基本上都在谈论实现大量基于触摸的GUI功能,并带来所有复杂性。您将不得不实施一个小型状态机来跟踪每个按钮的运行情况。例如,按钮以“未按下”状态开始。如果您在按钮内检测到触摸,则会转换为“按下”状态。当触摸移动(或结束或取消)时,您检查按钮是否仍然包含触摸。如果没有,则转换回“未按下”状态。您的游戏循环可以检查按钮的状态并相应地生成事件(例如,某些按钮可能需要在按下时连续生成事件,而其他按钮在释放时会生成单次事件)。