मैंने एक जावास्क्रिप्ट फ़ंक्शन का आह्वान करने के लिए "बाहरी इंटरफेस.call()" का उपयोग करने का प्रयास किया है जो कैनवास की सामग्री देता है। हालांकि, अपेक्षाकृत छोटे कैनवास (256x256) के लिए यह तर्कसंगत/वापसी मूल्य के मार्शलिंग की वजह से बहुत धीमा (लगभग 2 सेकंड) है।फ्लैश में एचटीएमएल 5 कैनवास की सामग्री को कुशलता से आयात करने के लिए कैसे?
भले ही मैं कैनवास डेटा को छोटे हिस्सों में तोड़ दूं, जैसा कि ब्रैड न्यूबर्गे द्वारा एक पुरानी पोस्ट (2006 से) में सुझाया गया है: http://codinginparadise.org/weblog/2006/02/how-to-speed-up-flash-8s.html, मुझे अभी भी खराब प्रदर्शन मिलता है। किसी भी तरह से फ्लैश 9 के रूप में भाग का आकार कोई मुद्दा नहीं होना चाहिए।
मुझे लगता है कि मैं फ्लैश जावास्क्रिप्ट फ़ंक्शंस को ओवरराइट करने का प्रयास कर सकता हूं जो मापदंडों के मार्शलिंग/मूल्यांकन करते हैं, लेकिन यह बहुत शामिल है और मैं जानना चाहता था कि ऐसा करने से पहले मुझे कुछ आसान याद आ रहा था या नहीं।
मैं भी ऐसा करने से फ्लैश और जावास्क्रिप्ट संवाद करने के लिए पुराने तरीके से करने की कोशिश की:
var req : URLRequest = new URLRequest("javascript:getImage()");
var loader : Loader = new Loader();
loader.load(req);
जहां "getImage()" एक जावास्क्रिप्ट समारोह है कि एक छवि के रूप कैनवास की सामग्री देता है। लेकिन यह किसी प्रकार की सुरक्षा उल्लंघन त्रुटि को फेंकता है क्योंकि किसी भी ब्राउज़र स्क्रिप्ट को लक्ष्य URL के रूप में उपयोग करने की अनुमति नहीं है, जब तक कि कोई "लोडर.लोड()" फ़ंक्शन के विपरीत "navigateToURL()" का उपयोग न करे। दुर्भाग्य से पूर्व एक मूल्य वापस नहीं करता है।
मैं भी "com.macromedia.javascript.JavaScriptProxy" वर्ग का उपयोग कर कुछ पुराने कोड को देखा है, लेकिन मैं इसे परीक्षण नहीं किया है और यह फ्लैश में उपलब्ध हो प्रतीत नहीं होता है 11.
किसी भी विचार होगा बहुत सराहना कीजिए। धन्यवाद!
कुछ समय पहले मैंने फ्लैश पर वेबकैम वीडियो कैप्चर करने के लिए [फ्लैशकैम] (http://code.google.com/p/flashcam/) लिखा था और जावास्क्रिप्ट का उपयोग कर एचटीएमएल 5 कैनवास पर इसे खींच लिया था। कुछ परीक्षणों के बाद, मैं अंत में आधार 36 का उपयोग करके एन्कोड किए गए लगातार पिक्सेल मतभेदों के अल्पविराम से अलग मूल्यों के स्ट्रिंग के साथ एक जटिल जटिल स्कीमा का उपयोग करता हूं। कोड की जांच करें, प्रक्रिया को बहुत कठिन नहीं होना चाहिए। –
@ जुआनमेलडो, संकेत के लिए धन्यवाद। निश्चित रूप से, जिस तरीके से आप छवि डेटा को एन्कोड करते हैं, वह एक बड़ा अंतर बनाता है, और स्ट्रिंग जाने का तरीका है क्योंकि अंत में सब कुछ एक्सएमएल प्रारूप में पारित किया जाता है। मैं एक पीएनजी संपीड़न + बेस 64 एन्कोडिंग का उपयोग कर समाप्त हुआ जिसे कैनवास फ़ंक्शन 'canvas.toDataURL (' image/png ') के माध्यम से बहुत कुशलता से किया जा सकता है। छवि डेटा को पिक्सेल या बाइट सरणी के रूप में पारित करने की तुलना में आयाम के कुछ आदेशों द्वारा यह बेहतर प्रदर्शन, जिसमें क्लाइंट साइड पर __flash__toXML() कॉल प्रति पिक्सेल शामिल है। शायद मुझे इसे एक उत्तर के रूप में पोस्ट करना चाहिए, यकीन नहीं है, मैं SO के लिए नया हूं। – elyuro
ग्रेट। और हाँ, फिर अपने प्रश्न का उत्तर दें। –