Animuję wahadło, które zmienia się z 0 stopni na maksimum 200 stopni, a następnie z powrotem. Problem polega na tym, że jeśli wahadło przekroczy 180 stopni, powraca do 0 najkrótszą drogą, która ma iść w prawo. I chciałbym, żeby poszło w kierunku przeciwnym do ruchu wskazówek zegara. Oto mój kod: („prawo” jest wartością logiczną, co jest prawdą, gdy wahadło kołysze się od lewej do prawej)Wymuś obrót w kierunku zgodnym lub przeciwnym do ruchu wskazówek zegara, aby wywołać CABasicAnimation z 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"];
}
jakieś pomysły w jaki sposób można dokonać tej pracy? To ostatni kawałek mojej swingometru, który poza tym działa świetnie: D!
Michael
Dziękuję za odpowiedź, ale nie wydaje mi się to ważne. Obawiam się. Ustawienie go na wartość -ive sprawia, że animacja jest na końcu ...Myślę, że być może będę musiał napisać go ponownie, aby użyć NSTimer'a i animować obiekt klatka po klatce ... – Smikey
Właściwie masz rację - ponieważ kMin jest obecnie ustawiony na -20, więc robi to huśtawka przeciwnie do ruchu wskazówek zegara, ale tylko wtedy, gdy nie przekracza 180 stopni. Jeśli minie 180, to bez względu na to, jaką ustawię wartość (-180, -90, 90 itd.), Zawsze kontynuuje zgodnie z ruchem wskazówek zegara, nawet jeśli nie jest to najkrótsza droga ... Jakieś inne pomysły? – Smikey
AAAAH, jeśli ustawię wartość podobną do -380, działa. Nie jestem do końca pewien, dlaczego, ale właśnie dodałem warunek, który przełącza wartość ToValue w zależności od tego, czy początkowa zmiana przekroczyła 180 stopni. Dzięki za pomoc! – Smikey