2016-04-18 15 views
2

私は私の惑星が太陽に近づくと動きを加速し、太陽が遠くになると減速します。ありがとうございますどのように私は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"]; 

答えて

2

CAMediaTimingFunctionを使用します。 pre-defined timing functionsをチェックしてください。これらのいずれかをrotationAnimation.timingFunctionに割り当てることができます。あなたが望むように聞こえるのはkCAMediaTimingFunctionEaseInEaseOutです。私は、惑星の出発点が太陽から遠いと仮定しています。コードでは、それは次のようになります。

スウィフト:

rotationAnimation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut) 

のObjective-C:

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

が離れているあなたは私のコードでそれを使用する方法で私を助けることができますしてください –

+0

かそれの例を教えてください –

+0

惑星が太陽に関して位置が変わるなら、あなたが私に使ってみたいことは何でしょうか?そう、 "EaseInEaseOut"はすべての惑星でうまくいかないでしょう。それは各惑星に応じて異なる必要があります.. –

関連する問題