2010-10-14 73 views
1

我在使用动画块时遇到困难。我试图让第一个动画改变图像的alpha值,使其闪烁,然后在10秒后消失。第一个动画然后转移到secondAnimation,它只对不同的图像做同样的事情。该过程然后无限重复。动画块无限循环 - iphone

我一直在工作这一段时间了,不能让它无限重复。我遇到的另一个问题是有这个动画过程延迟 - 以便它在20秒后开始,有足够的时间播放音频文件。

- (void) firstAnimation { 
      UIViewAnimationOptions options = UIViewAnimationOptionCurveLinear; 

      [UIView animateWithDuration:1.0 delay:10.0 options:options animations:^ 
      { 
        myImage.alpha = 0.0; 
        myImage.alpha = 1.0; 

      } 

        completion:^(BOOL finished){ 

        [self secondAnimation]; 
      } 
      ]; 

    } 

感谢一如既往的任何帮助。我已经搜索了示例代码和教程,但我发现的基本上是我在上面的代码中做的。

回答

1

我认为你必须在动画块外设置你的alpha的初始值,并且只需要在块内部设置你想要动画的值。

UIViewAnimationOptions options = UIViewAnimationOptionCurveLinear; 
myImage.alpha = 0.0; 
[UIView animateWithDuration:1.0 delay:10.0 options:options animations:^ 
     { 
       myImage.alpha = 1.0; 

     } 
+0

的感谢!这很好地工作。你知道我怎么能把它放在一个无限循环? 再次感谢 – hanumanDev 2010-10-14 13:15:28

+0

您应该能够通过以上述方式链接功能来实现这一点。第一个anim调用第二个调用第一个等等。除此之外,我会建议使用NSTimer每隔X秒调用第一个动画函数以获得无穷大。 – Ben 2010-10-14 13:20:56

+0

好的,谢谢。也许我应该使用NSTimer,因为我希望动画在音频剪辑播放后开始。 – hanumanDev 2010-10-14 13:52:59

1
animateImageWithCount:(int)aCount{ 
    if(aCount >= [imageArray count]){ 
     NSLog(@"Done all images"); 
     return; 
    } 

    UIImage *myImage = [ImageArray objectAtIndex:aCount]; 
    UIViewAnimationOptions options = UIViewAnimationOptionCurveLinear; 

    myImage.alpha = 0.0; 
    [UIView animateWithDuration:1.0 delay:10.0 options:options animations:^{ 
     myImage.alpha = 1.0; 
    } 
    completion:^(BOOL finished){ 
     [self animateImageWithCount:(aCount+1)]; 
    }]; 
} 
+0

哇。你真的救了我一段时间。我一直在寻找解决方案的时间,你的美丽。谢谢! – CoderMarkus 2012-09-01 07:11:06