J'ai réussi à mettre en œuvre une solution à ce problème, mais le code semble plutôt inefficace et en fait, les appels de méthode retardés s'avèrent un peu gênants quand ils continuer à se déclencher si l'utilisateur a navigué vers un autre écran. Fondamentalement je veux qu'une bulle de pensée apparaisse de la tête d'un personnage, mais animée, de sorte qu'une petite bulle apparaisse, suivie d'une plus grande, d'une plus grande encore et finalement de la bulle principale qui contient alors une petite animation. J'ai réussi cela en affichant chaque bulle avec sa propre méthode, puis d'appeler les méthodes avec des retards:Une meilleure façon d'échelonner les appels de méthode/affichage 3 UIImageViews en séquence différée
- (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;
}
Je suppose que je pourrais créer une grande animation où les bulles font partie du même cadre et chaque cadre contient une bulle de plus, mais je voulais en quelque sorte pouvoir déplacer les bulles un peu dans Interface Builder et cette approche n'offre pas beaucoup de flexibilité.
Toutes les pensées seraient très appréciées.
Merci,
Michael