2016-04-18 17 views
2

Ich möchte, dass mein Planet seine Bewegung beschleunigt, wenn es näher an der Sonne ist und verlangsamen, wenn es weiter von der Sonne entfernt ist .. Bitte helfen Sie mir! DankeWie kann ich beschleunigen/verlangsamen die Drehung eines Knopfes in CABasicAnimation

CABasicAnimation * rotationAnimation;

rotationAnimation=[CABasicAnimationanimationWithKeyPath:@"transform.rotation.z"]; 
rotationAnimation.toValue = [NSNumber numberWithFloat: -M_PI * 2.0 /* full rotation*/ * 1/period ];//multiply more to add speed 
rotationAnimation.duration = 15; 
rotationAnimation.cumulative = YES; 
rotationAnimation.repeatCount = HUGE_VALF; 
[planet.layer addAnimation:rotationAnimation forKey:@"orbit"]; 

Antwort

2

Sie möchten ein CAMediaTimingFunction verwenden. Schauen Sie sich die pre-defined timing functions an. Sie können eine davon rotationAnimation.timingFunction zuweisen. Es klingt wie du willst kCAMediaTimingFunctionEaseInEaseOut. Ich gehe davon aus, dass der Startpunkt des Planeten weit von der Sonne entfernt ist. Im Code würde es so aussehen:

Swift:

rotationAnimation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut) 

Objective-C:

rotationAnimation.timingFunction = [CAMediaTimingFunction functionWithName: kCAMediaTimingFunctionEaseInEaseOut]; 
+0

ist es weg können Sie mir helfen, wie es in meinem Code zu verwenden, bitte –

+0

oder geben Sie ein Beispiel dafür –

+0

was würden Sie mir empfehlen zu verwenden, wenn die Planeten in der Position in Bezug auf die Sonne variieren .. so "EaseInEaseOut" würde nicht auf allen Planeten funktionieren .. und es funktioniert nicht anders herum .. es sollte für jeden Planeten anders sein .. –