2009-06-29 7 views
8

से सरणी भेजें क्या एक बाहरी इंटरफेस कॉल का उपयोग कर फ्लैश (एएस 3) से जावास्क्रिप्ट में एक सरणी भेजना संभव है?फ्लैश (एएस 3) से जावास्क्रिप्ट

मैं वर्तमान में फ्लैश के अंदर 'प्रत्येक' लूप के लिए कई बार फ़ंक्शन कॉल कर रहा हूं लेकिन जावास्क्रिप्ट को बनाए रखने के लिए यह बहुत तेज़ हो जाता है।

मेरा विचार गुणों की एक सरणी बनाना है, जावास्क्रिप्ट फ़ंक्शन को पास करना है और फिर जावास्क्रिप्ट में उस के माध्यम से लूप करना है।

धन्यवाद, जोश

+1

बस जो शायद मेरी समस्याएं उत्पन्न कर इस पाया http://www.scottgmorgan.com /blog/index.php/tag/externalinterface/ फिर भी यदि संभव हो तो सरणी में रुचि रखते हैं। – Josh

उत्तर

7

JSON का उपयोग करने के सुझाव के आगे, यह छोटे सरणी के लिए तेज़ होना चाहिए और पार्स के लिए eval या बाहरी लाइब्रेरी के उपयोग की आवश्यकता नहीं होगी। इस तरह एक स्ट्रिंग में एक सरणी में शामिल हों फ्लैश में:

ITEM1 | ITEM2 | ITEM3 | item4

जे एस करने के लिए स्ट्रिंग दर्रा और इसे फिर से विभाजन का उपयोग कर विभाजित ("|")

+0

अच्छा विचार - धन्यवाद। – Josh

+5

बस सुनिश्चित करें कि आपके डेटा में विभाजक चरित्र नहीं होंगे! – singpolyma

6

तुम हमेशा एक JSON वस्तु बनाने और जावास्क्रिप्ट है कि गुजर सकता है।

+1

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

+0

एक जेसन ऑब्जेक्ट प्राप्त करते समय आप इसे स्ट्रिंग में फ्लैश में कैसे स्टोर करते हैं? –

8

हाँ, यह है मुमकिन।

http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/external/ExternalInterface.html#call()

... तर्क - तर्क कंटेनर में कार्य करने के लिए पारित करने के लिए। आप शून्य या अधिक पैरामीटर निर्दिष्ट कर सकते हैं, उन्हें अल्पविराम से अलग कर सकते हैं। वे किसी भी एक्शनस्क्रिप्ट डेटा प्रकार के हो सकते हैं। जब कॉल एक जावास्क्रिप्ट फ़ंक्शन के लिए है, एक्शनस्क्रिप्ट प्रकार स्वचालित रूप से जावास्क्रिप्ट प्रकारों में परिवर्तित हो गए हैं; जब कॉल कुछ अन्य ActiveX कंटेनर है, पैरामीटर अनुरोध संदेश में एन्कोड किए गए हैं।

एक त्वरित परीक्षण:

कोड के रूप में:

if(ExternalInterface.available) { 
    ExternalInterface.call("jsTest", [0,1,"two",{a:1,b:2}]); 
} 

जे एस कोड:

function jsTest(arg) { 
    alert(arg); 
}