2012-01-02 18 views
5

के साथ CABasicAnimation अंतराल मुद्दों मैं आईफोन के लिए एक संगीत वाद्ययंत्र बना रहा हूँ। मेरे ऐप में जब मैं एक कैलियर को एक नोट नाटक करता हूं और परत नोट की अवधि के लिए एक विग्लू करता है।आईओएस 5 और रिमोटियो

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

// here is an example wiggle 
CABasicAnimation *wiggle = [CABasicAnimation animationWithKeyPath:@"transform"]; 
wiggle.duration = 0.1; 
//wiggle.repeatCount = 1e100f; 
wiggle.repeatCount = 100; 
wiggle.autoreverses = YES; 
wiggle.toValue = [NSValue valueWithCATransform3D:CATransform3DRotate(fret.fretLayer.transform,0.2, 0.0 ,1.0 ,2.0)]; //angle, x , y , z 
wiggle.fromValue = [NSValue valueWithCATransform3D:CATransform3DRotate(fret.fretLayer.transform,-0.2, 0.0 ,1.0 ,2.0)]; //angle, x , y , z 

// doing the wiggle 
[note.noteLayer addAnimation:wiggle forKey:@"wiggle"]; 

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

क्या किसी को आईओएस 5 में CABasicAnimation के साथ किसी भी असामान्य समस्या के बारे में पता है? क्या कोई वैकल्पिक एनीमेशन एपीआई है जिसे मैं कोशिश कर सकता हूं जो दोहराने पर एक निर्दिष्ट अवधि के लिए कैलियर को एनिमेट कर सकता है? किसी के पास कोई सुझाव या अनुमान है कि कैसे ठीक किया जाए/समस्या क्या हो सकती है?

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

CABasicAnimation *wiggle = [CABasicAnimation animationWithKeyPath:@"backgroundColor"]; 
wiggle.duration = 2; 
wiggle.toValue = (id)[UIColor whiteColor].CGColor ; 
wiggle.fromValue = (id)[UIColor colorWithRed:0.1 green:0.2 blue:0.8 alpha:0.4].CGColor; 

संदेह है कि यह शायद कोरऑडियो/रिमोटियो में बदलाव के साथ कुछ करने के लिए हो सकता है? और यह मुख्य धागे या वीज़ा के विपरीत हस्तक्षेप कर रहा है?

उत्तर

1

अंत में इस मुद्दे को उत्पन्न करने की वास्तविक प्रकृति का काम किया। आईओएस में कंधा = वाईईएस का उपयोग करने में कोई समस्या है।

मेरे ऐप में मैं UIView में 100+ कैलियर एम्बेड कर रहा हूं जिसकी परत परत कोस्टरराइज = हाँ है। मैंने ग्राउंड अप से एक नया ऐप बनाया और जब तक मैंने समस्या को दोहराया तब तक बिट्स जोड़े। आखिरकार यह हो गया। आईओएस 4 में यह कोई समस्या नहीं है। आईओएस 5 में यह है। अगर मैं बंद कर दूं तो समस्या तुरंत गायब हो जाती है।

सेब के साथ एक बग रिपोर्ट सबमिट की है।

0

बस परीक्षण के लिए, [UIView startAnimation/commitAnimation] के साथ CABasicAnimation को प्रतिस्थापित करने का प्रयास करें।

+0

क्या UIView एनिमेशन कैलियर पर काम करते हैं? मैंने अपना कोड लिखने की कोशिश की और यहां से शीर्ष उत्तर का उपयोग करने का भी प्रयास किया: http://stackoverflow.com/questions/929364/how-to-create-iphones-wobbling-icon-effect लेकिन दोनों का अनदेखा करने का एक ही प्रभाव है फ़ंक्शंस और बस fret.fretLayer.transform = CATransform3DMakeRotation (-0.2, 0.0, 1.0, 2.0) कोड को पार करने के रूप में चल रहा है (इसलिए केवल इसे एक बार चला रहा है) चला रहा है। मेरे द्वारा पोस्ट किए गए लिंक का वह शीर्ष उत्तर CATransform3D के बजाय CGAffineTransform का उपयोग करना प्रतीत होता है, लेकिन मैं सीएएलएफ़िनट्रांसफॉर्म को सीधे कैलियर पर लागू नहीं कर सकता? कोई विचार? (Ps.thanks) – chopsalot