捕获触摸,存储在数组中,然后设置数组内容的动画

时间:2013-05-09 20:08:29

标签: objective-c arrays animation

我是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;

}   

}

1 个答案:

答案 0 :(得分:0)

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