2009-03-28 18 views
7

साथ रिलीज/डीबग विन्यास मैं हाल ही में मैं कहाँ गलती से ग्राहकों निर्माण जहां नहीं मेरे सभी डिबगिंग झंडे और चर सेट नहीं थे भेजा जाना था कोडिंग एक शर्मनाक कुछ फ्लैश के साथ स्थिति का सामना किया। (यह बजाय रिहाई सर्वर, आदि के डिबग करने के लिए अनुरोध भेज रहा था ...) इस बात काफ्लैश + AS3

भाग मेरी ओर से गरीब कोड संगठन था, मैंने इसे हल कर लिया है।

हालांकि, फ़्लैश अलग-अलग निर्माण कॉन्फ़िगरेशन सेट करने की अनुमति नहीं देता है, और एक्शनस्क्रिप्ट संकलन सेटिंग्स ऐसी फ़ैशन में व्यवस्थित विभिन्न प्रकार की स्विच होस्ट करती हैं जो किसी चीज़ को चेक/अनचेक करने के लिए भूल जाती हैं (ओएमजी, मैं डीबगर को अक्षम करना भूल गया समर्थन!) बस हो सकता है, जैसा कि यह मेरे साथ किया था। किसी भी मामले में, मुझे लगता है कि मैन्युअल रूप से मेरी रिलीज कॉन्फ़िगरेशन और डीबग कॉन्फ़िगरेशन के बीच मैन्युअल रूप से कूदना आसान है।

तो, अन्य डेवलपर्स, क्या तकनीक आप त्रुटि प्रूफ में आपके परीक्षण config के बीच कूद, और निर्माण config है कि आप अपने बॉस/ग्राहकों के लिए जारी प्रयोग करते हैं/जो कोई भी?

मुझे पता है कि मुझे शायद धीमा होना चाहिए, लेकिन मैं कुछ ऐसा स्थापित करना पसंद करूंगा जहां मैं सिर्फ एक स्विच फ्लिप कर सकता हूं। मैं लंबे समय के बाद फ्लैश में वापस कूद रहा हूं (फ्लैश एमएक्स + 2004 का थोड़ा सा)।

ओह, और मैं डिबग समर्थन अक्षम करने और आयात पासवर्ड और वह सब की स्थापना की निरर्थकता के बारे में पता कर रहा हूँ, मेरा लक्ष्य बस अपने प्रोजेक्ट से बाहर स्क्रिप्ट kiddies रखने के लिए है। Decompilers सभी इतना ट्रम्प .....

वैसे भी, धन्यवाद!

उत्तर

5

मैं इस तरह एक वातावरण वर्ग का उपयोग करें,: यह आपकी मुख्य ActionScript वर्ग में

public class MyEnvironment { 
    public static const DEBUG:Boolean = true; 
    public static const SERVER:String = 'localhost'; 
    // More here 
} 

आयात, और इसे संदर्भ सुनिश्चित करें कि आपके सहायक कार्यों के सभी। उदाहरण के लिए, आपके डीबगर फ़ंक्शन केवल तभी चलाना चाहिए जब MyEnvironment.DEBUG सत्य है, और आपके नेटवर्क फ़ंक्शंस को MyEnvironment.SERVER पर अनुरोध भेजना चाहिए।

मेरी सेटअप में, मैं MyEnvironment.as के रूप में सहेजना चाहते हैं। (जाहिर है, कक्षा का नाम वास्तविक जीवन में अलग होगा।) मैं कॉपी को MyEnvironment.as-debug और MyEnvironment.as-release के रूप में भी सहेजूंगा; उत्तरार्द्ध में अलग-अलग सेटिंग्स होंगी। फिर, अगर मुझे रिलीज बिल्ड की ज़रूरत है, तो मेरी बिल्ड स्क्रिप्ट MyEnvironment.as-release से MyEnvironment.as (मूल ओवरराइटिंग) की प्रतिलिपि बनायेगी, और पुनः संकलित करेगी। इससे मेरी सभी रिलीज सेटिंग्स मेरी मुख्य एक्शनस्क्रिप्ट कक्षा में लोड हो जाएंगी; विपरीत अगर मैं एक डीबग निर्माण के लिए स्क्रिप्ट चलाता हूं।

+0

ठीक है। क्या कोड में एक्शनस्क्रिप्ट 3 प्रकाशित सेटिंग्स को नियंत्रित करना संभव है? आपकी प्रतिक्रिया के लिए धन्यवाद! –

3

एक अच्छा विचार है कि जब आप डिबगिंग मोड में दृश्य संकेत का उपयोग करें। जब DEBUG ध्वज सेट किया गया है, तो स्क्रीन के कोनों में से एक में 'डीबग मोड' और शायद संस्करण संख्या, या ऐसा कुछ के साथ टेक्स्टफ़िल्ल्ड प्रदर्शित करें।

जब आपके यह एक ग्राहक के लिए भेजने से पहले अपने अंतिम परीक्षण कर रही है, क्या आप डीबग मोड अक्षम करने में भूल गए हैं देखेंगे।

यह निश्चित रूप से इस पर निर्भर करता है कि आप अपनी परियोजना को कैसे व्यवस्थित करते हैं। जैसा कि एक और जवाब में वर्णित है, पूरे आवेदन के माध्यम से ध्वज को उच्च स्तर के 'वैश्विक' वर्ग में स्थानांतरित करना अच्छा होता है।

9

यदि आप फ्लैश सीएस 4 का उपयोग कर रहे हैं तो आप कॉन्फ़िगर स्थिरांक का उपयोग कर सकते हैं। आप उन्हें प्रकाशित सेटिंग्स के अंतर्गत पाएंगे | ActionScript3.0 सेटिंग्स ...| कॉन्फ़िग स्थिरांक

यदि आप जोड़ा डीबग :: खिलाड़ी तो आप इस तरह कोड का उपयोग कर सकते हैं:

config namespace DEBUG; 

//... code here ... 

DEBUG::PLAYER 
{ 
    trace("Player state here"); 
} 

अब तुम सिर्फ सही और गलत के बीच लगातार बदल सकते हैं।

+0

बहुत बढ़िया! हालांकि, ऐसा लगता है कि इस तरह की चीज सीएस 3 में उपलब्ध नहीं है, है ना? –

+0

हाँ, मैं बहुत यकीन है कि यह CS4 में एक नई सुविधा हूँ। लेकिन मैं 100% निश्चित नहीं हूँ। –

0

मैं एक flashvar "TestingEnvironment" कहा जाता है का उपयोग करें। आवेदन शुरू, मैं loaderInfo.parameters में जाँच अगर यह 'सही' (एक स्ट्रिंग शाब्दिक, एक बूलियन नहीं) के लिए सेट को देखने के लिए, और अगर यह है, मैं सच करने के लिए एक वैश्विक पर्यावरण वर्ग उदाहरण पर एक सार्वजनिक स्थिर वर debugMode निर्धारित किया है। तब मेरे सभी वर्ग देख सकते हैं कि हम एक परीक्षण वातावरण में हैं, और तदनुसार कार्य करेंगे।

इसके अलावा, के बाद से मैं परीक्षण और उत्पादन के लिए एम्बेड करने के लिए अलग पेज कोड का उपयोग, मैं flashvar उत्पादन पेज एम्बेड में समाप्त करने के लिए कभी नहीं की उम्मीद है। और यदि ऐसा होता है, तो बंद करना आसान है, कोई पुन: संकलित करने की आवश्यकता नहीं है।