1

私はアプリを設計していますが、マルチタッチ タップとマルチタッチ タップの遅延に問題があります (これにより、TouchesBegan が 2 回個別に呼び出されます)。

私たちが遭遇した問題は、プレーヤーが 2 本の指で同時にタップした場合です。

touches.count = 2 の NSSet として登録できる場合もあります。

また

プレーヤーが 2 回目のタッチで少しでも遅れた場合、CCTouchesBegan への 2 つの呼び出しがそれぞれ touches.count = 1 で登録されることがあります。

両方の TouchesBegan 呼び出しを touches.count = 2 で登録し、プレーヤーが 2 回目のタッチ (TouchesBegan への 2 回の呼び出し) で少し遅れたときに、同じコールバックで登録する最も簡単な方法は何でしょうか?

私の最初の考えは、[イベントのタイムスタンプ] を取得し、それを以前のタイムスタンプと比較して、それが特定の時間間隔内にあるかどうかを確認することでした...

これを行う最良の方法は何ですか?

4

1 に答える 1

1

タイムスタンプの比較は必要ありません。touches NSSet オブジェクトを使用する代わりに、イベントを利用してタッチを取得できます。

- (void) ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    if( [[event allTouches] count] == 2 )
    {
        // Do your thing here
    }
}

注: わずかに遅れて 2 本の指でタップすると、ccTouchesBegan が 2 回呼び出されますが、2 回目の呼び出しイベントオブジェクトには 2 つのタッチがあります。

于 2012-09-21T07:16:51.823 に答える