2013-02-24 52 views
10

मैं सिर्फ एक गूंगा जबकि पाश से काफी बड़ा एनीमेशन दुबारा लिखा (drawRect फायरिंग: x बार) और इसCABasicAnimation वर्तमान बीता हुआ समय

आखिरी बात यह है कि मैं सिर्फ को समझ नहीं सकता है .. मैं कैसे प्राप्त कर सकते हैं मेरे एनीमेशन का वर्तमान विलुप्त समय?

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

लेकिन मैं यह कैसे का उपयोग पल मेरी एनीमेशन शुरू से वर्तमान बीता हुआ समय की गणना करने के कर सकते हैं: मैं कैसे वर्तमान CFTimeInterval (Is there a way to pause a CABasicAnimation?) प्राप्त करने के लिए पता है? ऐसा लगता है कि स्टार्टटाइम हमेशा 0.0 है, क्या मुझे यह निर्धारित करना होगा कि मेरी एनीमेशन शुरू हो जाए और फिर स्टार्टटाइम से वर्तमान समय निकालें?

मुझे खेद है कि अगर यह कुछ आसान है जो मैं देख रहा हूं, तो मैंने कल कोर एनीमेशन का उपयोग करना शुरू कर दिया। :)

संपादित करें: beginTime स्थापना वास्तव में एक नुकसान यहाँ पर नहीं तरह से यह करने के लिए है।

+0

एनीमेशन शुरू होने पर आप वर्तमान समय को रिकॉर्ड क्यों नहीं कर सकते (जिसे आप जानते हैं कि आपको इसे शुरू करना था)? – trojanfoe

+1

या प्रतिनिधि बनें और 'एनीमेशनडिडस्टार्ट में चेक करें: ' –

+0

संयुक्त; 'एनीमेशनडिड स्टार्ट:' के अंदर वर्तमान समय रिकॉर्ड करें। हां यह एक एनीमेशन के लिए अच्छा काम करेगा, लेकिन एकाधिक एनिमेशन के बारे में क्या? बस उन सभी को ट्रैक करें? अगर एनीमेशन से बीतने का कोई दूसरा रास्ता नहीं है तो यह शर्म की बात होगी। –

उत्तर

6

आप क्या चाहते हैं जब आप बनाने के अपने CABasicAnimation स्पष्ट रूप से की तरह शुरू करने के लिए समय निर्धारित है, ऐसा करने के लिए एक संभवतः आसान तरीका:

:

basicAnimation.beginTime = CACurrentMediaTime(); 

बाद में आप पर पता लगा सकते हैं कितना समय के साथ बीत जाने पर

CFTimeInterval elapsedTime = CACurrentMediaTime() - basicAnimation.beginTime; 

और के माध्यम से प्रतिशत प्राप्त के साथ:

progress = elapsedTime/basicAnimation.duration; 

(कोड यदि आपके पास टाइम ऑफसेट या ऐसा कुछ है तो थोड़ा और जटिल होगा।)