我在设置动画时遇到问题。第一个imageview开始动画,当playound1被调用时,然后开始第二个动画。一切正常,但现在当第二个动画停止时,没有动画正在进行。所以我想做的是在第二个动画停止后 - 第一个全部开始 - 然后再次调用方法来播放第二个动画。任何提示?
在这里,您可以看到现在的部分代码:
- (void)loadtest1 {
NSArray *imageArray = [[NSArray alloc] initWithObjects:
[UIImage imageNamed:@"test1.png"],
[UIImage imageNamed:@"test2.png"],
[UIImage imageNamed:@"test3.png"],
[UIImage imageNamed:@"test4.png"],
nil];
test1.animationImages = imageArray;
test1.animationRepeatCount = 0;
test1.animationDuration = 1;
[imageArray release];
[test1 startAnimating];
}
- (void)loadtest2 {
NSArray *imageArray = [[NSArray alloc] initWithObjects:
[UIImage imageNamed:@"test4.png"],
[UIImage imageNamed:@"test5.png"],
[UIImage imageNamed:@"test6.png"],
[UIImage imageNamed:@"test7.png"],
nil];
test2.animationImages = imageArray;
test2.animationRepeatCount = -1;
test2.animationDuration = 1;
[imageArray release];
[test2 startAnimating];
}
- (IBAction)playsound1 {
NSString *path = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"mp3"];
AVAudioPlayer* theAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
theAudio.delegate = self;
[theAudio play];
test1.hidden = 0;
test2.hidden = 1;
[test1 startAnimating];
test2.center = test1.center;
}
答案 0 :(得分:2)
如果我理解正确的话,你要做的就是在第二个动画完成时重新开始你的第一个动画
处理此问题的正确方法是通过CABasicAnimation
,它允许您指定在动画完成时调用– animationDidStop:finished:
方法的委托。
如果你不想这样,有一种解决方法如下:在loadtest2
中,在你开始动画之后,安排一个延迟执行的方法:
[self performSelector:@selector(loadTest1) withObject:nil afterDelay:1.0];
这将(或多或少)令人满意地工作,因为您知道动画将持续多长时间。因此,当动画结束时,执行loadTest1
并再次开始第一个动画。