2013-05-07 88 views
-2

我想在特定的时间内制作动画。我的代码如下:动画在逝去动画后继续

- (void)animate{ 

NSArray *myImages = [[NSArray alloc] initWithObjects: 
        [UIImage imageNamed:@"01.png"], 
        [UIImage imageNamed:@"02.png"], 
        [UIImage imageNamed:@"03.png"], 
        [UIImage imageNamed:@"04.png"], 
        [UIImage imageNamed:@"05.png"], 
        [UIImage imageNamed:@"06.png"], 
        [UIImage imageNamed:@"07.png"], 
        [UIImage imageNamed:@"08.png"], 
        [UIImage imageNamed:@"09.png"], 
        [UIImage imageNamed:@"10.png"], 
        [UIImage imageNamed:@"11.png"], 
        [UIImage imageNamed:@"12.png"], 
        [UIImage imageNamed:@"13.png"], 
        nil]; 


faceImage.animationImages = myImages; 
faceImage.animationDuration = 4.0; 
faceImage.animationRepeatCount = 4; 

[faceImage startAnimating]; 

}

现在问题流逝animationDuration后,animationRepeatCount持续几秒钟!但是我想在4秒内制作我的animationRepeatCount。 4秒后我的动画应该停止!我在做我的代码有什么问题?或者,我该如何解决这个问题?

+0

所以你可以使动画持续时间为1 – Impossible 2013-05-07 07:03:09

+1

这应该需要16秒,每次重复序列4秒。这些都在文档中。 – rdelmar 2013-05-07 07:05:24

+0

因此,根据@ rdelmar和你的要求,你可以这样做:faceImage.animationDuration = 1.0; faceImage.animationRepeatCount = 4; – Amit 2013-05-07 07:10:24

回答

1

你的代码应该是:

- (void)animate 
{ 
    NSArray *myImages = [[NSArray alloc] initWithObjects: 
        [UIImage imageNamed:@"01.png"], 
        [UIImage imageNamed:@"02.png"], 
        [UIImage imageNamed:@"03.png"], 
        [UIImage imageNamed:@"04.png"], 
        [UIImage imageNamed:@"05.png"], 
        [UIImage imageNamed:@"06.png"], 
        [UIImage imageNamed:@"07.png"], 
        [UIImage imageNamed:@"08.png"], 
        [UIImage imageNamed:@"09.png"], 
        [UIImage imageNamed:@"10.png"], 
        [UIImage imageNamed:@"11.png"], 
        [UIImage imageNamed:@"12.png"], 
        [UIImage imageNamed:@"13.png"], 
        nil]; 


    faceImage.animationImages = myImages; 
    faceImage.animationDuration = 1.0; 
    faceImage.animationRepeatCount = 4; 

    [faceImage startAnimating]; 
} 
+1

非常感谢。 – Leo 2013-05-07 07:51:05

2

在你走之前的任何进一步需要了解以下内容:

animationDuration; //用于一个图像周期。默认为图像数量* 1/30秒(即30fps)

这意味着您设置的动画持续时间为一个图像周期。所以现在如果你想在4秒内重复动画4次。设置animationDuration 1秒。

在任何情况下,如果您需要,您也可以手动stopAnimating;

0

首先像这样的东西取代您的可怕的数组初始化:

int imageCount = ...; 
int *longestStringLength = [NSString stringWithFormat:@"%d", imageCount - 1].length; 
NSMutableArray *myImages = [[NSMutableArray alloc] init]; 
for (int i = 0; i < imageCount; i++) { 

    NSString *filename = [NSString stringWithFormat:@"%d", i]; 
    while(filename.length < longestStringLength) { 

     filename = [NSString stringWithFormat:@"0%@", filename]; 
    } 
    filename = [filename stringByAppendingString:@".png"]; 
    [myImages addObject:[UIImage imageNamed:filename]]; 
} 

对于第二个,检查当前的动画时长和划分它的可变4如果有必要。