J'anime un pendule qui oscille de 0 degré à 200 degrés maximum puis revient à nouveau. Le problème est que si le pendule dépasse 180 degrés, il revient à 0 par la route la plus courte qui doit continuer dans le sens des aiguilles d'une montre. Et j'aimerais que ça se fasse dans le sens inverse des aiguilles d'une montre. Voici mon code: (« droit » est un booléen qui est vrai lorsque le pendule oscille de gauche à droite)Rotation dans le sens des aiguilles d'une montre/anti-horaire pour un CABAnimation d'un UIImageView
- (void)swingPendulum {
CABasicAnimation *rotationAnimation;
rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
if (right)
rotationAnimation.toValue = [NSNumber numberWithFloat:degreesToRadians(kMax)];
else
rotationAnimation.toValue = [NSNumber numberWithFloat:degreesToRadians(kMin)];
rotationAnimation.duration = 1.0;
rotationAnimation.repeatCount = 1.0;
rotationAnimation.delegate = self;
rotationAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
rotationAnimation.removedOnCompletion = NO;
[pendulum.layer addAnimation:rotationAnimation forKey:@"rotationAnimation"];
}
Toute idée comment je peux faire ce travail? C'est la dernière pièce de mon puzzle swingomètre qui fonctionne par ailleurs très bien: D Merci!
Michael
Merci pour la réponse, mais je n'ai pas l'air de faire une différence. Le mettre à une valeur -ive semble juste rendre l'animation à la fin ...Je pense que je devrais peut-être le réécrire pour utiliser un NSTimer et animer la chose image par image ... – Smikey
En fait, vous avez raison - puisque kMin est actuellement réglé sur -20, donc cela ne fait qu'effectuer le balancement du pendule anti-horaire, mais seulement si elle ne dépasse pas 180 degrés. Si elle dépasse 180, peu importe la valeur que je lui donne (-180, -90, 90 etc.), elle continue toujours dans le sens des aiguilles d'une montre, même si ce n'est pas la plus courte ... D'autres idées? – Smikey
AAAAH, si je le mets à une valeur comme -380 cependant, cela fonctionne. Je ne suis pas vraiment sûr pourquoi, mais j'ai juste ajouté une condition qui bascule le toValue selon si le swing initial passe 180 degrés. Merci pour votre aide! – Smikey