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

是的,您的方法不正确。现在,您的代码基本上同时触发了三个动画——while 循环不会在开始下一个动画之前等待一个动画完成。相反,您应该开始一个动画,等待它完成,开始下一个动画,等待它完成,依此类推。您可以通过对每个动画使用完成块来启动下一个动画来做到这一点。看看+animateWithDuration:animations:completion:,例如。它允许您指定动画的完成块。

于 2013-05-09T20:13:50.357 回答