2009-01-06 9 views
5

मेरे पास ऐसी स्थिति है जहां मेरे पास कई कैलियर हैं जो "बारी आधारित" फैशन में एनिमेट करते हैं। मैं उन प्रत्येक कैलियर पर स्थिति को एनिमेट करता हूं, लेकिन उनके पास समान अवधि होती है। एक बार उन सभी कैलियर एनिमेटिंग समाप्त हो जाने के बाद, एक नया "मोड़" शुरू किया जाता है और वे फिर से बदलती स्थिति को एनिमेट करते हैं।कोर एनीमेशन का उपयोग करना, क्या कई कैलियर के लिए एनीमेशन समूह करने का कोई तरीका है?

पूरा विचार यह है कि पदों के बीच एक रैखिक इंटरपोलेशन के साथ, और निरंतर गति पर, राज्य से राज्य के बीच एक बारी आधारित संक्रमण वास्तविक समय एनीमेशन की तरह दिखता है। हालांकि, यह कई अलग-अलग कैलियर के साथ हासिल करना मुश्किल है।

CAAnimationGroup का उपयोग एकल कैलियर पर एनिमेशन को एक साथ समूहित करने के लिए किया जाता है। लेकिन मैं सोच रहा था, क्या समूह एनिमेशन के लिए एक आसान समाधान है, जो कि कई कैलियर पर एक ही अवधि के समान हैं?

संपादित केविन बेलार्ड के सवाल का जवाब देने

मेरे समस्या इस में निहित है शामिल करने के लिए। मैं अपने प्रत्येक कैलियर के लिए एनिमेशन बना रहा हूं, फिर एनएसएआरएआरई में डाल रहा हूं। एक बार जब मैं कॉलबैक प्राप्त करता हूं कि व्यक्तिगत एनीमेशन समाप्त हो गया है, तो मैं इसे एनएसएआरएआरएआर हटा देता हूं। एक बार यह खाली हो जाने के बाद, मैं फिर से उन सभी के लिए एनिमेशन बना देता हूं।

कुछ परतों के साथ, सभी एनिमेशन समाप्त होने के बीच एक उल्लेखनीय देरी है और नए लोग शुरू होते हैं।

मुझे कल्पना है कि अगर मैं इन सभी एनिमेशन को एक ही समूह में समूहित कर सकता हूं, तो एनिमेशन के बीच देरी के बिना बहुत अधिक परत एनिमेटेड हो सकती हैं। इस प्रकार एक संगत एनीमेशन के भ्रम को बर्बाद नहीं करते हैं।

उत्तर

5

यदि आप एक ही विधि में एकाधिक कैलियर के लिए एनिमेशन संलग्न करते हैं, तो वे सभी एक ही समय में प्रभावी ढंग से शुरू हो जाएंगे। मैं एनीमेशन के अंत में गेंदों को छोड़ने के साथ एक पहेली खेल में इस दृष्टिकोण का उपयोग करता हूं, मैं एनीमेशन के अगले चरण को किसी भी गेंद को संलग्न करता हूं जिसके लिए आगे एनीमेशन की आवश्यकता होती है।

मैं एक समय में 60 कैलियर तक एनिमेट कर रहा हूं और एनीमेशन के चरणों के बीच किसी भी देरी का अनुभव नहीं कर रहा हूं, लेकिन मैं एनिमेशन को किसी भी प्रकार की सरणी में कैश नहीं करता हूं, मुझे यकीन नहीं है कि आपके पास ओवरहेड है क्या आप वहां मौजूद हैं।

मेरी एनिमेशन अपेक्षाकृत सरल है, और फ्लाई पर प्रत्येक कैलियर से बनाई गई है और जुड़ी हुई है। मेरे sprites 60px वर्ग हैं और उनकी सामग्री का प्रतिनिधित्व करने के लिए दो दर्जन संभावित छवियों का उपयोग करें।

कुछ मामलों में गुणात्मक एनिमेशन हैं जो मैं विभिन्न शुरुआती समय (स्टार्टटाइम का उपयोग करके) के साथ बना सकता हूं, मैं उन्हें CAAnimationGroup के साथ बंडल करता हूं - लेकिन आप बाद के एनिमेशन को पूर्ववत करने में सक्षम नहीं हो सकते हैं।

0

यदि आप एक ही समय में 3 अलग-अलग परतों में 3 एनिमेशन जोड़ते हैं, और उनके पास समान अवधि है, तो मैं उन सभी को एक साथ एनिमेट करने की अपेक्षा करता हूं। आप क्या व्यवहार देख रहे हैं?

+0

मैंने मुख्य प्रश्न में आपकी क्वेरी का उत्तर संपादित किया, क्योंकि यह यहां फिट नहीं हुआ था। –

2

यदि आप अपने एनिमेशन को कैट्रान्सक्शन में लपेटते हैं, तो सीजी सुनिश्चित करेगा कि वे सभी मुख्य लूप के समान पुनरावृत्ति के दौरान चलते हैं।

[CATransaction प्रारंभ]; // आपके सभी एनिमेशन [CATransaction प्रतिबद्ध];

0

cp21yos: क्या आप अपनी विधि पर विस्तृत कर सकते हैं? मैं कुछ ऐसा करने की कोशिश कर रहा हूं, जिसमें एक समय में कई परतों को एनिमेट करना शामिल है। आपने कहा: "एनिमेशन के अंत में मैं एनीमेशन के अगले चरण को संलग्न करता हूं"। क्या आप इसे समझा सकते हैं?जब मैं एनीमेशनडिडटॉप ईवेंट में अतिरिक्त एनिमेशन करने के लिए तर्क डालने का प्रयास करता हूं, तो एनिमेशन की संपूर्ण अनुक्रम की बजाय केवल अंतिम एनीमेशन होता है।