2008-11-23 8 views
6

अधिक समेकित स्तर पर a previous question, मेरे अनुभव में एएस 3: बाहरी इंटरफेस, fscommand, और नेविगेट ToURL का उपयोग करके एम्बेडेड। एसडब्ल्यूएफ से एक HTML पृष्ठ पर जावास्क्रिप्ट फ़ंक्शन को कॉल करने के 3 तरीके हैं।एक्शनस्क्रिप्ट 3 जावास्क्रिप्ट संचार के लिए: सर्वोत्तम प्रथाओं

की तुलना करते हैं और इन तरीकों (और शायद दूसरों मैं सूचीबद्ध नहीं किया है) विपरीत और पेशेवरों और प्रत्येक के विपक्ष के बारे में बात - अभी, ExternalInterface तरह से लचीलापन के मामले में जाने के लिए की तरह लगता है, लेकिन यह है सभी स्थितियों के लिए सही है? निष्पादन गति या उसके जैसा कुछ भी के मामले में ठोस लाभ हैं? मैं उत्सुक हूँ - हम क्या सोचते हैं?

उत्तर

6

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

+0

ठीक है - मुझे यह पसंद है, यह वही है, वीबीस्क्रिप्ट चीज, एकल तर्क वस्तु, और नेविगेट टॉउल वैकल्पिक के रूप में - इसलिए, जब आप बाहरी इंटरफेस की उपलब्धता की जांच करते हैं, तो क्या आप जांच कर रहे हैं फ्लैश साइड, या यह किसी भी तरह से यह देखने के लिए जांच कर रहा है कि जावास्क्रिप्ट है या नहीं? –

+0

मेरा जवाब थोड़ा सा अपडेट किया गया। –

+0

अच्छा, यह समझ में आता है। –

5

यह सब अगर आप संचार तुल्यकालिक या नहीं ExternaInterface के रूप में के रूप में जहां navigatoToURL और fscommand अतुल्यकालिक हैं और केवल एक जावास्क्रिप्ट समारोह कॉल कर सकते हैं डेटा लौट सकते हैं होना चाहता हूँ पर निर्भर करता है; वे मूल्य या प्रतिक्रिया वापस नहीं कर सकते हैं।

बाहरी इंटरफ़ेस के संबंध में लाइव डॉक्स से:

ActionScript से, आप HTML पृष्ठ पर निम्न कर सकते हैं:

  • कॉल किसी भी जावास्क्रिप्ट समारोह।
  • किसी भी नाम के साथ, किसी भी संख्या में तर्क पारित करें।
  • विभिन्न डेटा प्रकारों (बूलियन, संख्या, स्ट्रिंग, आदि) पास करें।
  • जावास्क्रिप्ट फ़ंक्शन से वापसी मूल्य प्राप्त करें।
HTML पृष्ठ पर जावास्क्रिप्ट से

, आप:

  • कॉल एक ActionScript कार्यप्रणाली।
  • मानक फ़ंक्शन कॉल नोटेशन का उपयोग करके तर्क पास करें।
  • जावास्क्रिप्ट फ़ंक्शन के लिए एक मूल्य लौटाएं।

flash.external.ExternalInterface वर्ग flash.system.fscommand वर्ग के लिए एक सीधा प्रतिस्थापन है।

तो बाहरी इंटरफेस का उपयोग फ्लैश और जावास्क्रिप्ट फ़ंक्शन के बीच पसंदीदा विधि या संचार है, हालांकि अगर कॉल केवल असीमित है तो flash.net.navigateToURL का उपयोग करना ठीक है।

+0

असीमित बिंदु एक अच्छा है। –

2

ExternalInterface

  • आप जे एस-रूप से वापसी मान प्राप्त कर सकते हैं और के रूप में-जे एस
  • एन्कोड अपने तर्क
  • (सरणियों, वस्तुओं, आदि उन्हें सांकेतिक शब्दों में बदलना करने के लिए कोई ज़रूरत नहीं के साथ कहते हैं) कॉल
  • क्रॉस ब्राउज़र
  • दोषपूर्ण है जब आप भेजने HTML या JSON (विशेष एन्कोडिंग), यह breaks internally

getURL

  • आप केवल जे एस कॉल कर सकते हैं, तो आप नहीं दिया गया मान मिलता है और आप अपने डेटा सांकेतिक शब्दों में बदलना करने की जरूरत है
  • अच्छा था की तुलना में पदावनत और फ्लैश 10 में यह
  • यह वास्तव में निकाल दिया जाता है हटा दिया है , तो यह प्रयोग नहीं करते,)

fscommand

  • चलो, बाहरी इंटरफेस समाधान है (2008 के लिए)।
+0

अच्छी तरह से डाला गया - फ्लैश 10 में बहिष्करण और बाद में हटाने के लिए यह मेरे लिए cinches। –

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