2011-02-17 17 views
5

बंद करें मैं एआईआर अनुप्रयोग प्रोग्रामेटिक रूप से बंद करने का सही तरीका जानना चाहता हूं।प्रोग्राम्सिक रूप से एक एआईआर एप्लिकेशन

मेरी स्पार्क WindowedApplication में मेरे पास है:

this.addEventListener(Event.CLOSING, shutdownApp); 

और निश्चित रूप से shutdownApp विधि के एक कार्यान्वयन (जो मूल रूप से अस्थायी फ़ाइलों को tidies)।

यह विंडो के ऊपरी-दाएं बंद बटन के लिए ठीक काम करता है। हालांकि मेरे पास कार्यक्षमता भी है जिसे एप्लिकेशन को बंद करने की आवश्यकता है। कोड के भीतर मैं कहा जाता है:

NativeApplication.nativeApplication.exit(); 

हालांकि इस Event.CLOSING विधि ट्रिगर नहीं होता और इसलिए मेरे अस्थायी फ़ाइलों को साफ नहीं कर रहे हैं। क्या मुझे देशी एप्लिकेशन को कॉल नहीं करना चाहिए? यदि हां, तो मुझे इसके बजाय क्या कॉल करना चाहिए? मुझे NativeApplication.exit() से पहले मेरी shutdownApp विधि को कॉल करने की आवश्यकता नहीं है क्योंकि यह काफी सुंदर नहीं लग रहा है।

क्या कोई इसे करने के सही तरीके से कोई प्रकाश डाल सकता है?

धन्यवाद,

फिल

उत्तर

4

प्रलेखन थोड़ा इस पर अस्पष्ट लग रहा है और मैं एक ही व्याख्या यह है कि तुमने किया होगा। क्या आपने close या विंडोएड एप्लिकेशंस पर बाहर निकलने के तरीकों का प्रयास किया था?

कुछ इस तरह, FlexGlobals और topLevelApplication साथ:

(FlexGlobals.topLevelApplication as WindowedApplication).close(); 

या

(FlexGlobals.topLevelApplication as WindowedApplication).exit(); 
+1

जब मैंने पहली बार इसका प्रयास किया, तो मुझे टाइप एरर मिला: त्रुटि # 100 9: किसी संपत्ति या शून्य ऑब्जेक्ट संदर्भ की विधि तक नहीं पहुंच सकता। ऐसा इसलिए था क्योंकि मैंने स्पार्क की बजाय एमएक्स विंडोएड एप्लीकेशन आयात किया था। आपका सुझाव काम किया (मैंने करीबी() का उपयोग किया)। धन्यवाद! – Phil

7

मैं जानता हूँ कि इस सवाल का जवाब दिया गया है और स्वीकार किए जाते हैं, लेकिन सोचा था कि मैं साझा करते हैं, मैं का उपयोग करें।

stage.nativeWindow.close(); 
+0

उत्कृष्ट! यह एकमात्र समाधान है जो वास्तव में मेरे लिए काम करता था, thanx! –

1

बस यहां एक उत्तर दें क्योंकि मैंने एक संबंधित प्रश्न की खोज की है और sth नहीं ढूंढ पा रहा था।

मैं कुछ ऐसा करना चाहता था और एक एआईआर अनुप्रयोग बंद करना चाहता था जब दस्तावेज़ विंडो (spark.components.Window) के मूल बंद बटन को दबाया जाता है कि स्पार्क विंडोड एप्प्लिकेशन कंटेनर (एप्लिकेशन मुख्य विंडो) अभी भी सक्रिय है और देशी मेनू का प्रबंधन करें (एप्लिकेशन स्टार्टअप पर इसे स्प्लैश स्क्रीन प्रदर्शित करने के लिए भी उपयोग किया जाता है। इसे बंद करना है क्योंकि यह बंद हो गया है, तो मूल मेनू दिखाई नहीं देगा या अब पहुंच योग्य नहीं होगा, इसलिए इसकी दृश्यमान संपत्ति सिर्फ झूठी पर सेट है)।

मेरी मुख्य समस्या खिड़की समापन घटना थी। जैसे

 this.addEventListener(Event.Closing, windowClosed); 

ActionScript के साथ पंजीयन काम नहीं करता है: नहीं समापन समारोह भेजा गया। एकमात्र तरीका एक ईवेंट हैंडलर को सीधे एस में पंजीकृत करना था: एमएक्सएमएल फ़ाइल की शुरुआत में विंडो तत्व।मैं तो बस बंद करने विशेषता में फेंक:

 closing="window1_closingHandler(event)" 

घटना तो भेजा और window1_closingHandler-समारोह में गया था मैं

 NativeApplication.nativeApplication.exit(); 

कि मेरे लिए काम करता है और पूरे आवेदन बंद हो जाता है कहा जाता है।

संबंधित मुद्दे