我已经设法解决了这个问题,但是代码看起来效率很低,实际上,如果用户导航到另一个屏幕,延迟的方法调用在它们继续触发时会有点麻烦。
基本上我想要一个思想泡泡从一个角色的头上出现,但是是动画的,所以会出现一个小泡泡,然后是一个更大的泡泡,一个更大的泡泡,最后是一个包含一点动画的主泡泡。我通过使用自己的方法显示每个气泡,然后延迟调用这些方法来解决这个问题:
- (void)showMood {
animating = TRUE;
[self showBubble1];
}
- (void)showBubble1 {
bubble1.hidden = FALSE;
[self performSelector:@selector(showBubble2) withObject:nil afterDelay:kBubbleDelay];
}
- (void)showBubble2 {
bubble2.hidden = FALSE;
[self performSelector:@selector(showBubble3) withObject:nil afterDelay:kBubbleDelay];
}
- (void)showBubble3 {
bubble3.hidden = FALSE;
[self performSelector:@selector(showThoughtBubble) withObject:nil afterDelay:kBubbleDelay];
}
- (void)showThoughtBubble {
thoughtBubble.hidden = FALSE;
[self startBubbleAnimations];
[self performSelector:@selector(hideThoughtBubble) withObject:nil
afterDelay:kAnimationDuration * kAnimationRepeatCount];
}
- (void)hideThoughtBubble {
bubble1.hidden = TRUE;
bubble2.hidden = TRUE;
bubble3.hidden = TRUE;
thoughtBubble.hidden = TRUE;
[bubbleAnimation stopAnimating];
animating = FALSE;
}
我想我可以创建一个大型动画,其中气泡都是同一帧的一部分,并且每一帧都包含一个气泡,但是我有点希望能够在 Interface Builder 中移动气泡,而这种方法不会提供很大的灵活性。
任何想法将不胜感激。
谢谢,
迈克尔