2010-02-20 17 views
5

मैं Flex Compile Time Constants का उपयोग करने की कोशिश कर रहा हूं ताकि एसडब्ल्यूएफ बनाया गया दिनांक और समय शामिल हो सके (स्रोत नियंत्रण संशोधन/टाइमस्टैम्प जैसे एसवीएन: कीवर्ड हमारी आवश्यकताओं के लिए पर्याप्त नहीं है, हमें वास्तविक जानना होगा समय का निर्माण, प्रतिबद्ध समय नहीं)।फ्लेक्स संकलन समय स्थिरांक - टाइमस्टैम्प

मैं actionscript का उपयोग कर (प्रलेखन की तरह चलता है आप में सक्षम होना चाहिए) की कोशिश की है:

-define+=COMPILE::Timestamp,"new Date()" 

लेकिन यह देता है "एक विन्यास मूल्य के लिए प्रारंभकर्ता एक संकलन समय निरंतर होना चाहिए"

मैं उदाहरण के लिए, खोल करने के लिए छोड़ और (विभिन्न सिंगल और डबल उद्धरण विन्यास का प्रयोग करके) तिथि आदेश का उपयोग करने के लिए इसे प्राप्त करने की कोशिश की है:

-define+=COMPILE::Timestamp,`date +%Y%m%d%H%M%S` 

मैं केवल छ और यह सरल तारों और सरल निरंतर अभिव्यक्तियों के साथ काम करने के लिए (उदाहरण के लिए, मैं 4-2 कर सकता हूं और यह रनटाइम पर 2 होगा। लेकिन मैं इसे कुछ भी करने के लिए नहीं प्राप्त कर सकता हूं जिसका मूल्य स्पष्ट रूप से ज्ञात नहीं होगा जब मैं परिभाषित करता हूं।

क्या किसी के पास इस तरह से कोई भाग्य है?

उत्तर

3

मैं एक ही समस्या थी और एक प्रारंभिक बिंदु के रूप using this blog post समाप्त हो गया। मेरे लिए वास्तव में अच्छा काम किया। बस वर्ग के कुछ बिट्स को फ्लेक्स 4 में अपडेट करना पड़ा। अनुपालन वाले एसएफएफ से तारीख को हटा दिया गया।

+1

आपके द्वारा प्रदान किया गया लिंक मुझे इस ब्लॉग पर ले गया पोस्ट: http: //www.i gorcosta.org/?p=220। यह इसे और भी दूर करता है और कोई अतिरिक्त लाइब्रेरी निर्भरताओं को पेश नहीं करता है। यह आपको अपने रनटाइम से संकलन समय तक पहुंच प्रदान करता है (परिभाषित करने का उपयोग नहीं करता है, लेकिन इसे 'लोडरइन्फो.जेटलोडरइन्फोइफिनिशन (खाली क्लास) .bytes' के माध्यम से रिक्त वर्ग से पढ़ रहा है और इसे बायटियर के उपयोग से पार्स कर रहा है) – MightyE

+0

शानदार। धन्यवाद ताकतवर। – mrjrdnthms

0

आपकी समस्या की कुंजी एडोब समय स्थिर संकलित का हवाला देते हुए निम्न कथन में सबसे अधिक संभावना है: निरंतर किया जा सकता एक बूलियन, स्ट्रिंग, या संख्या, या एक अभिव्यक्ति है कि संकलन समय पर ActionScript में मूल्यांकन किया जा सकता ।

मुझे लगता है कि टाइमस्टैम्प संकलन समय पर उपलब्ध नहीं है।

हालांकि, अगर आप के बजाय (कुछ इस तरह)

public function GetUnixTime():String{ 
var myDate:Date = new Date(); 
var unixTime:Number = Math.round(myDate.getTime()/1000); 
return unixTime.toString(); 
} 

एक और सोचा आप संकलित फ़ाइल से जानकारी प्राप्त कर सकता है कि एक स्ट्रिंग का उपयोग कोशिश कर सकते हैं।

उम्मीद है कि इससे मदद मिलती है।

+0

"या एक अभिव्यक्ति जिसे संकलन समय पर एक्शनस्क्रिप्ट में मूल्यांकन किया जा सकता है" ने मुझे आशा दी है, लेकिन यहां तक ​​कि सबसे सरल परिदृश्य भी मैं कल्पना कर सकता हूं ('-define + = COMPILE :: Timestamp," नई तिथि() "') काम नहीं करता है (न ही 'नई तारीख()। toString() ') करता है। मैंने आपकी तरह एक विधि बनाने का प्रयास किया है, लेकिन यह ऊपर बताए गए समान त्रुटि देता है, "कॉन्फ़िगरेशन मान के लिए प्रारंभकर्ता एक संकलन समय स्थिर होना चाहिए।" – MightyE

+0

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

+0

FWIW, एक छोटी पृष्ठभूमि: यह एक लाइब्रेरी है जो अन्य अनुप्रयोगों में एम्बेड की जाएगी। हम जरूरी गारंटी नहीं दे सकते कि यह एक विशेष सर्वर-साइड रनटाइम चलाएगा, न ही यह भी आवश्यक है कि यह एक वेब पेज, एयर ऐप, डेस्कटॉप ऐप, फोन विजेट इत्यादि में चल रहा है। – MightyE

0

व्यापक शोध के बाद, मैंने निष्कर्ष निकाला है कि यह केवल करने योग्य नहीं है।

0

यदि आप अपने बिल्ड करने के लिए फ्लेक्सबिल्डर का उपयोग नहीं करते हैं तो आप इसे आसानी से कर सकते हैं।

मैवेन में फ्लेक्समोोजोस के साथ ऐसा कुछ करता हूं।

प्रासंगिक config अनुभाग में:

   <definesDeclaration> 
        <property><name>BUILD::buildVersion</name><value>"${project.version}"</value></property> 
        <property><name>BUILD::buildRevision</name><value>"${buildNumber}"</value></property> 
       <property><name>BUILD::buildTimestamp</name><value>"${timestamp}"</value></property> 
       </definesDeclaration> 

FlexBuilder काफी एक जैसे कारणों के लिए एक निर्माण वातावरण के रूप में बेकार है आप का उल्लेख