0

私は Objective-C を初めて使用しますが、オンラインの膨大な量の情報を通じて、自分のアプリである程度の進歩を遂げました。私の目的は、記録ボタンを押してから、ボールを表すアイコンをビュー全体に移動することです。タッチを配列にキャプチャし、再生ボタンをクリックして配列内の座標をステップ実行してタッチをアニメーション化することで、ボールの動きを再生します。

私がテストしているコードは、配列をステップ実行して、座標の各セットを順番にアニメーション化しようとしています。最後のアニメーションのみが発生します。私のアプローチ全体が間違っている可能性があると思います。お時間をいただきありがとうございます。

NSMutableArray *yourCGPointsArray = [[NSMutableArray alloc] init];
[yourCGPointsArray addObject:[NSValue valueWithCGPoint:CGPointMake(300, 001)]];
[yourCGPointsArray addObject:[NSValue valueWithCGPoint:CGPointMake(300, 300)]];
[yourCGPointsArray addObject:[NSValue valueWithCGPoint:CGPointMake(001, 300)]];
int i;
i=0;
while (i < 3) {
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:1];
    [UIView setAnimationDelay:1.0];
    CGPoint point = [[yourCGPointsArray objectAtIndex:i] CGPointValue];
    player3.center = CGPointMake(point.x , point.y);
    [UIView commitAnimations];
    NSLog (@"i array %d", i);
    NSLog (@"cgpoint x %f", point.x);
    NSLog (@"cgpoint y %f", point.y);
    i = i + 1;

}   

}

4

1 に答える 1

0

はい、あなたのアプローチは間違っています。現時点では、コードは基本的に同時に 3 つのアニメーションを起動します。while ループは、1 つのアニメーションが完了するのを待たずに次のアニメーションを開始します。代わりに、1 つのアニメーションを開始し、それが完了するまで待ってから、次のアニメーションを開始し、完了するまで待つ必要があります。これを行うには、各アニメーションで完了ブロックを使用して次のアニメーションを開始します。+animateWithDuration:animations:completion:たとえば、 を見てください。アニメーションの完了ブロックを指定できます。

于 2013-05-09T20:13:50.357 に答える