2013-02-24 18 views
10

Sadece döngü sırasında dilsiz oldukça büyük bir animasyon yeniden yazdı animasyonumun geçen süresi?CABasicAnimation akım geçen süre

CFTimeInterval currentTime = [self.multiplierLayer convertTime:CACurrentMediaTime() fromLayer:nil]; 

Ama nasıl benim animasyon başladı andan itibaren geçerli geçen zamanı hesaplamak için kullanabilir: Ben şimdiki CFTimeInterval (Is there a way to pause a CABasicAnimation?) almak için nasıl biliyor? BeginTime her zaman 0.0 gibi görünüyor, animasyonumun başladığı anı ayarlamak ve currentTime'ı beginTime'dan ayıklamak zorunda mıyım?

Üzgünüm, baktığım bir şey basitse, dün Core Animation kullanmaya başladım. :)

Düzenleme: BeginTime Ayar gerçekten burada bir kayıp, değil bunu yapmak için bir yoldur.

+0

Animasyon başladığında o andaki saati neden kaydedemiyorsunuz (ki bunu başlatmak zorunda olduğunuzu biliyorsunuz)? – trojanfoe

+1

ya da delege olun ve 'animationDidStart: ' –

+0

’yu kontrol edin; animDidStart: 'içinde şu anki zamanı kaydedin. Evet, bu tek bir animasyon için işe yarardı, ancak çoklu animasyonlar ne olacak? Sadece hepsini takip et? Bir animasyondan geçen süreyi elde etmenin başka bir yolu yoksa, utanç olurdu. –

cevap

6

size CABasicAnimation açıkça gibi, başlangıç ​​zamanını ayarlamak oluştururken olduğunu istediğini yapma bir olasılıkla daha kolay bir yolu:

:
basicAnimation.beginTime = CACurrentMediaTime(); 

Daha sonra size anlayabiliriz

ne kadar zaman ile geçtikten
CFTimeInterval elapsedTime = CACurrentMediaTime() - basicAnimation.beginTime; 

Ve yoluyla yüzde alacağım ile:

progress = elapsedTime/basicAnimation.duration; 

(kod Bir timeOffset'iniz veya bunun gibi bir şey varsa biraz daha karmaşık olacaktır.)