Sto animando un pendolo che oscilla da 0 gradi a 200 gradi massimi e poi di nuovo indietro. Il problema è che se il pendolo supera i 180 gradi, torna a 0 per il percorso più breve che deve continuare in senso orario. E mi piacerebbe che andasse in senso antiorario. Ecco il mio codice: ('destra' è un valore booleano che è vero quando il pendolo sta oscillando da sinistra a destra)Rotazione in senso orario/antiorario per un CABasicAnimazione di 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"];
}
Tutte le idee come posso fare questo lavoro? È l'ultimo tassello del mio puzzle con lo swingometro, che altrimenti funziona alla grande: D Grazie!
Michael
Grazie per la risposta, ma non sembra fare la differenza, ho paura. Impostandolo su un valore -ive sembra proprio che l'animazione si spezzi alla fine ...Penso che forse dovrei dover riscriverlo per usare un NSTimer e animare la cosa fotogramma per fotogramma ... – Smikey
In realtà, hai ragione - dal momento che kMin è attualmente impostato a -20, così che effettivamente fa oscillare il pendolo in senso antiorario, ma solo se non supera i 180 gradi. Se supera 180, indipendentemente dal valore impostato su (-180, -90, 90 ecc.), Continua sempre in senso orario, anche se non è la via più breve ... Altre idee? – Smikey
AAAAH, se si imposta su un valore come -380, tuttavia, funziona. Non sono davvero sicuro del perché, ma ho appena aggiunto una condizione che cambia il valore di toValue a seconda che l'oscillazione iniziale passi o meno di 180 gradi. Grazie per tutto l'aiuto! – Smikey