私はOpenGLを使ってiPhoneゲームを作っています。私は、ゲームコントロールのインターフェースを書くときに問題に遭遇しました。私は4つのボタン(左、右、攻撃、ジャンプ)を持っており、私は同時に押すことができる必要があります。私が必要とするのは、Stationaryをtouchesする関数のようなものです(touchesBegin、MovedおよびEndのみがあります)。私は現在画面上のすべての指を返す関数が必要です(現在の段階に関係ありません)。しかし、それらの関数は、私が指を動かすとき、または指を持ち上げたときに、押すだけで戻ります。指が所定の位置に留まっているときにボタンを押す機能です。iPhoneでマルチタッチを扱う
touchesBegin、touchesMovedおよびtouchesEndを使用してコードを書き込もうとしましたが、ある関数は他のものとは異なる順序で指リストを返します。したがって、すべてをねじ込み、マルチタッチが不可能になります。
理想的な機能は、現在画面上のすべての指を戻してから、すべてを繰り返し、位置があるボタンの位置と一致するかどうかを確認してから、そのボタンをアクティブにできます。それをどうすれば実現できますか?
しかし問題は、「ボタンにまだ接触があるかどうかを確認する」という部分です。どうやってやるの?私はそれのための機能を見つけることができませんでした。私は触れ始める、移動する、または終了するときだけイベントを受け取ります。ユーザーが移動せずにボタンを保持している場合、気づかれることはありません。それが私が必要とするもので、ある位置に接触があるかどうかを確認するためです。 – HLorenzi
ボタンの中にタッチがあった場合(touchesBegan/Movedコールの結果として検出された)、以来タッチを受けていない場合移動中/終了/キャンセル:タッチがないことを示すコールボタンの内側に。タッチイベント間の現在の状態についてボタンに問い合わせることができるように、ボタンごとに1つの追加の値(おそらく 'isPressed'というブール値)を格納する必要があります。ボタンの状態を保存することで、タッチのコールバックに依存しない永続的な情報が得られます。 – warrenm
はい、すべてのボタンにisPressedを保存しています。しかし、問題はマルチタッチ機能のために発生します。私はいくつかのtouchesMovedイベントがいくつかのtouchesBeginイベントの同じ指であるかどうかを追跡することができません。例えば、ユーザーが画面上で指を動かしたかどうかを知る方法はありません。 - このシナリオでは触れられていなかったため、移動した指が最初のボタンを押したのと同じであるかどうかを知る方法はありません(私はそれを解くことができます)。説明するのは少し難しいです... – HLorenzi