1

アプリを作成しましたが、マルチタッチ対応にしたいです。私は周りを見回してみましたが、答えは私のものに固有のものではありません。これが私がすることです:

1)私のコーディング:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

[self touchesMoved:touches withEvent:event];
if (gameState == kGameStatePaused) {(gameState = kGameStateRunning);}
}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
if(gameState == kGameStateRunning) {

    UITouch *touch = [[event allTouches] anyObject];
    CGPoint location = [touch locationInView:touch.view];
    if(location.x > 400) {

        CGPoint yLocation = CGPointMake(playerPaddle.center.x, location.y);
        playerPaddle.center = yLocation;
    }

    if (gameStyle == kGameStyleTwoP) {
        if(location.x < 100) {

            CGPoint yLocation2 = CGPointMake(computerPaddle.center.x, location.y);
            computerPaddle.center = yLocation2;
        }
    }
}

2)Interface Builderに移動し、マルチタッチを有効にするチェックボックスをオンにしました

3)アプリをビルドして実行すると、アプリが正しく開きます。マルチタッチをテストするときは、「オプションキー」を押したまま、マウスをクリックして移動します。

4)(computerPaddleとplayerPaddleの両方を動かそうとしています)が、一度に1つの作品しか動作しません

私はそれを修正しようとしなければなりませんが、どこが間違っているのか理解できません。

どんな助けでも役に立ちます。THX。

4

2 に答える 2

10

UIViewに名前が付けられたプロパティがあり、これmultipleTouchEnabled をYESに設定して有効にすることができます(デフォルトはNO)。

touchesまた、で受け取るセット内のすべてのタッチを処理するためにループする必要がありますtouchesMoved

于 2012-05-31T12:38:15.957 に答える
2

この行を見てください

UITouch *touch = [[event allTouches] anyObject];

あなたはワンタッチで休息を無視するだけですそしてそれがただ一つのものだけが動くことができる理由です

したがって、forループに置き換えると問題が解決するはずです

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
if(gameState == kGameStateRunning) {

    for (UITouch *touch in [event allTouches]) {
    CGPoint location = [touch locationInView:touch.view];
    if(location.x > 400) {

        CGPoint yLocation = CGPointMake(playerPaddle.center.x, location.y);
        playerPaddle.center = yLocation;
    }

    if (gameStyle == kGameStyleTwoP) {
        if(location.x < 100) {

            CGPoint yLocation2 = CGPointMake(computerPaddle.center.x, location.y);
            computerPaddle.center = yLocation2;
        }
    }
}
}
于 2012-05-31T12:39:37.340 に答える