2011-07-28 7 views
11

Sorununu anlamakta sorun Bir iPad uygulamasında, bir merkez noktasını (768, 512) ve yarıçapı 512 olan bir yay boyunca bir katmanı saat yönünün tersine hareket ettirmek istiyorum. Saatin saat 12'de başlamasını istiyorum. (ekranın sağ üst köşesi) ve saat 6 yönünde bitirin (sağ alt köşede).CGPathAddArc

sonra bir sürü ben

CGPoint origin = logo.layer.position; 

CAKeyframeAnimation *pathAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"]; 
pathAnimation.calculationMode = kCAAnimationPaced; 
pathAnimation.fillMode = kCAFillModeForwards; 
pathAnimation.removedOnCompletion = YES; 

CGMutablePathRef curvedPath = CGPathCreateMutable(); 
CGPathMoveToPoint(curvedPath, NULL, origin.x, origin.y); 
CGPathAddArc(curvedPath, NULL, 768, 512, 512, -M_PI_2, M_PI_2, YES); 
pathAnimation.path = curvedPath; 
CGPathRelease(curvedPath); 
pathAnimation.duration = 2; 
[logo.layer addAnimation:pathAnimation forKey:@"curve"]; 

çalışma kodu var Ama sorun başlangıç ​​açısı ve bitiş açısı parametresini anlayamıyorum olduğunu deneme yanılma ve-. Neden sırasıyla -M_PI_2 ve M_PI_2 kullanmalı ve saat yönünde YES?

Ben, böylece kod
CGPathAddArc(curvedPath, NULL, 768, 512, 512, -M_PI_2, M_PI_2, YES);

ben birden fazla yerde muhtemelen yanlış ve şans eseri doğru sonucu aldığım olmalıdır ben 270 derecelik saat yönünün tersine 90 derece nesneyi hareket ediyorum düşünüyorum.

beni düzeltin ve bana iki açı parametrelerini anlamasına yardımcı olun:

startAngle

The angle (in radians) from the horizontal that determines the starting point of the arc. 

endAngle

The angle (in radians) from the horizontal that determines the ending point of the arc. 

Teşekkür

Leo

cevap

18

0 konumu, bu gibi, X ekseni üzerindedir:

3*PI/2 
     | 
PI ---|--- 0 
     | 
    PI/2 

-PI/2 3PI/2 eşdeğerdir.

Etkili aynı yerde rotasyonu başlıyoruz (vb -PI/2, 3 * PI/2, 5 * PI/2, herkesin eşit)

"00:00" Bunu düşündüğünüz gibi 3 * PI/2 veya -PI/2 ... ve "6 saat" in aşağı doğru dönüyorsunuz ki bu, PI/2

+1

baş aşağı y ekseniyle kafamı karıştırıyor. ayrıca, teşekkürler, bana yardımcı oldu :) – codrut