के बीच स्पार्क जीवन चक्र परिवर्तन मैंने हाल ही में अपनी कुछ परियोजनाओं को चमकीले नए फ्लेक्स 4.6 एसडीके में माइग्रेट कर दिया है। मुझे बहुत परेशानी की उम्मीद नहीं थी क्योंकि यह केवल मामूली रिलीज थी। लेकिन वास्तव में मुझे जगह पर सैकड़ों त्रुटियां मिलीं। ये त्रुटियां ज्यादातर स्पार्क SkinnableComponent
एस से आती हैं; उदाहरण के लिए:फ्लेक्स 4.5 और 4.6
override protected function getCurrentSkinState():String {
return mySkinPart.someProperty ? "normal" : "someOtherState";
}
4,5 के तहत ठीक काम करेगा, लेकिन मुझे 4.6 में एक nullpointer
त्रुटि फेंक होगा। कारण काफी सरल है: 4.6 getCurrentSkinState()
में त्वचापटल बनाने से पहले कहा जाता है, जबकि 4.5 में मैं निश्चित हो सकता हूं कि डिफ़ॉल्ट स्थिति में त्वचापटल वहां होंगे।
आगे की जांच ने मुझे विश्वास दिलाया कि States
सरणी में पहले राज्य के बजाय त्वचा की शुरुआती स्थिति अब undefined
है (जब तक यह getCurrentSkinState()
नहीं है)।
इन समस्याओं को ठीक करना आमतौर पर बहुत आसान है और मेरे हिस्से से कुछ और अधिक रक्षात्मक प्रोग्रामिंग की आवश्यकता है। लेकिन यह मेरा असली मुद्दा नहीं है।
असली मुद्दा कि अगर घटक जीवन चक्र बदल गया है, मैं वास्तव में को पता है कि बदल गया है और अपनी परियोजनाओं का क्या भागों प्रभावित हो सकता है चाहते हैं।
यदि कोई इस पर कुछ प्रकाश डाल सकता है या कम से कम मुझे सही जगह पर इंगित करता है तो मैं बहुत सराहना करता हूं जहां मैं इसके बारे में सब कुछ पढ़ सकता हूं (क्योंकि केवल रिलीज नोट्स जो मुझे मिल सकता था केवल नए मोबाइल घटकों को कवर कर रहा था) ।
संपादित (इस सवाल का परिवर्तन नहीं होता है, मैं बस आप के साथ अपने निष्कर्षों को साझा करना चाहते थे)
एक और मुद्दा मैं बस में भाग: dynamic
संशोधक अब से विरासत में मिला है किया जा रहा है उपवर्गों। यह एक शुद्ध एक्शनस्क्रिप्ट मुद्दा है, इसलिए मुझे लगता है कि यह संकलक है जो इसे अलग-अलग व्यवहार करता है।
मुझे समझाएं।
public class MyClass extends Array { }
अब, अगर मैं इस तरह इस कस्टम सरणी में एक नया आइटम पुश करने के लिए प्रयास करें:: इस वर्ग पर विचार करें
var t:Array = new MyClass();
t.push("hello");
- एसडीके 4.5.1: कोई समस्या नहीं
- एसडीके 4.6: "रनटाइम
पर स्पष्ट रूप से ऐसा इसलिए है क्योंकि ऐरे गतिशील है और MyClass नहीं है, इसलिए यह आसानी से है निश्चित:
public dynamic class MyClass extends Array { }
और त्रुटि समाप्त हो गई है।
लेकिन अगर मैंने तीसरे पक्ष की लाइब्रेरी का उपयोग किया है जिसमें इस तरह का कोड है और जिसके लिए मेरे पास कोई स्रोत कोड पहुंच नहीं है? मेरा आवेदन टूट जाएगा और कोई रास्ता नहीं है कि मैं इसे ठीक कर सकता हूं। मेरा मतलब है: चलो, यह एक डॉट रिलीज के लिए कोई मामूली परिवर्तन नहीं है।
मैंने इसे भी पारित किया है, मैं इसे एक बग मानता हूं। जैसा कि मैंने देखा है, यदि आप घटक को निष्क्रिय करने से पहले त्वचा के हिस्सों तक पहुंचने का प्रयास करते हैं। मेरा "समाधान" कॉललाटर() – sydd
@sydd का उपयोग करके अगले फ्रेम में skinparts तक पहुंचने के लिए है, मुझे नहीं लगता कि यह एक बग है। यह ढांचे में एक सतत बदलाव है और मैं इसके बारे में और जानना चाहता हूं। यदि आप जानना चाहते हैं कि एक त्वचापक्षक कब उपलब्ध है, तो बस 'partAdded() 'ओवरराइड करें। कॉललाटर() का उपयोग करना बिल्कुल सुंदर नहीं है। – RIAstar
@RIAstar क्या आपको कभी इसका समाधान मिला? मुझे 4.5 से 4.6 तक अपडेट करने में कुछ महत्वपूर्ण समस्याएं हैं (जैसा कि यहां विस्तृत किया गया है (http://stackoverflow.com/questions/11840098/upgrading-to-flex-4-6-from-flex-4-5)) और यदि आप कुछ अंतर्दृष्टि रखते हैं तो यह पूरी तरह से मेरा दिन बना देगा। – NoobsArePeople2