मेरा जवाब, निम्न गुणवत्ता क्योंकि मैं कई साल पहले फ्लैश के लिए दिलचस्पी खो जाएगा। इसे रखने का सबसे विनम्र तरीका: फ्लैश के मेरे कौशल जंगली हैं। (जंगली द्वारा, मेरा मतलब है फ्लैश -8 एक्शनस्क्रिप्ट 2.0/फ्लैश सीएस 4 एक्शनस्क्रिप्ट 2.0 जंगली का स्तर)। वास्तविक समस्या क्या है - मेरे पास वर्तमान कंप्यूटर पर फ्लैश के लिए कोई परीक्षण वातावरण नहीं है। इस प्रकार, यह एक अंधे सलाह होगी। बग से सावधान रहें।
लेकिन, उज्ज्वल पक्ष पर, मैं एकीकृत फ्लैश और जावास्क्रिप्ट का अनुभव था। जो कुछ मैं देखता हूं उससे अभी भी प्रासंगिक है। फ्लैश करने के लिए
जावास्क्रिप्ट:
तकनीक है कि मैं जानता हूँ कि की लघु सूची
ExternalInterface फ्लैश द्वारा प्रदान की वस्तु जावास्क्रिप्ट फ्लैश के अंदर तरीकों पर अमल की अनुमति देता है - इस एनीमेशन शुरू करने या डेटा लौट सकते हैं। दोष: सुरक्षा सेटिंग्स या प्लगइन के बग्गी कार्यान्वयन द्वारा बाहरी इंटरफेस को प्रतिबंधित किया जा सकता है।
document.getElementById ('exampleMovie')। SetVariable ("someVariableName", "कुछ टेक्स्ट"); - संदेश प्रणाली के रूप में उपयोग करने के लिए - फ्लैश घड़ी जो सुनने की जाएगी जोड़ने - एक varialbe परिवर्तन
फ्लैश जावास्क्रिप्ट के लिए क्या किया:
ExternalInterface फ्लैश द्वारा प्रदान की वस्तु फ्लैश से कार्यों को निष्पादित की अनुमति देता है जावास्क्रिप्ट। दोष: सुरक्षा सेटिंग्स या प्लगइन के बग्गी कार्यान्वयन द्वारा बाहरी इंटरफेस को प्रतिबंधित किया जा सकता है।
getUrl ('जावास्क्रिप्ट: someJavascriptFunction ("एक", "बी", true);'); मुझे यकीन है कि अगर यह सुरक्षा कारणों के लिए प्रतिबंध लगा दिया था लेकिन यह काम कर सकता था नहीं हूँ। मुख्य दोष यह है कि यह एक तरफा बातचीत है।
मुझे लगता है कि बाहरी इंटरफ़ेस का उपयोग करके बातचीत को लागू करने का सबसे तार्किक तरीका है।
हाँ, आप एक तरह से बातचीत 2. और 2. इस्तेमाल कर सकते हैं संचार प्रोटोकॉल का निर्माण करने के लिए - मैं भी है कि प्रणाली की कल्पना कर सकते हैं ... लेकिन यह है कि एक सा भी विकृत^^ होगा। + मुझे 'SetVariable' के लिए ब्राउज़र समर्थन के बारे में कोई डेटा नहीं मिल रहा है।+ Stackoverflow फ़ायरफ़ॉक्स SetVariable is not working in Firefox में setVariable की अजीब व्यवहार की एक रिपोर्ट है
यहाँ बाहरी इंटरफ़ेस के लिए Oficial प्रलेखन है: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/external/ExternalInterface.html
कि पेज एक ब्राउज़र संगतता टेबल है। शायद प्रलेखन अद्यतन की जरूरत है - गूगल क्रोम का कोई निशान जो मेरी राय में अजीब लगता है ...
वैचारिक रूप से, आप बाहरी इंटरफ़ेस उस तरह का उपयोग करें:
// HTML
// id must be equal to name here
// and shouldn't contain symbols . - + */\
<object id="exampleFlash" name="exampleFlash" ... >
...
</object>
// Javascript:
document.getElementById('exampleFlash').methodExposedForJavascript('value')
// ActionScript in Flash:
import flash.external.ExternalInterface;
ExternalInterface.addCallback("methodExposedForJavascript", someInternalFunction);
function someInternalFunction(msg) {
// do something with msg - for example output it to existing txt field:
_root.txtExampleTxt.text = msg;
}
सबसे प्रासंगिक उदाहरण उस मैनुअल पेज पर अंतिम है http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/external/ExternalInterface.html
संक्षिप्त निर्देश जटिल उदाहरणों को संकलित करने के लिए कैसे करें: http://help.adobe.com/en_US/as3/dev/WS9b644acd4ebe5999-2734bf3c124372a52ff-8000.html
वे वास्तव में काफी सरल हैं। अधिकांश कथित जटिलता तथ्य है कि वे फ्लैश के तत्वों को प्रोग्राम के उत्पन्न से आता है - जैसे
// all that this code does - is creating simple TextField in your movie
import flash.text.TextField;
package {
public class ABC extends Sprite
{
private var output:TextField;
public function ABC()
{
output = new TextField();
output.y = 25;
output.width = 450;
addChild(output);
}
}
}
इस उदाहरण आसान व्यक्त करने के लिए बनाने के लिए किया जाता है - लेकिन इस मूल रूप से 'अपने GUI का उपयोग पाठ क्षेत्र नामित बनाने के लिए रूप में ही है आउटपुट आपके पहले फ्रेम 'में।
मैं उस उदाहरण से कुछ भी अपरिचित कटौती करने की कोशिश करूंगा। "प्राप्त किया गया जावास्क्रिप्ट" पर ध्यान दें - यह एक ऐसा कार्य है जो जावास्क्रिप्ट द्वारा ट्रिगर किया जाएगा - आप अंदर प्रतिक्रिया जोड़ सकते हैं।
फ्लैश हिस्सा:
package {
import flash.display.Sprite;
import flash.events.*;
import flash.external.ExternalInterface;
import flash.text.TextField;
import flash.utils.Timer;
import flash.text.TextFieldType;
import flash.text.TextFieldAutoSize;
import flash.system.Security;
public class ExternalInterfaceExample extends Sprite
{
private var output:TextField;
public function ExternalInterfaceExample()
{
// constructor code
Security.allowDomain("*");
output = new TextField();
output.y = 25;
output.width = 450;
output.height = 325;
output.multiline = true;
output.wordWrap = true;
output.border = true;
output.text = "Initializing...\n";
addChild(output);
if (ExternalInterface.available) {
try {
output.appendText("Adding callback...\n");
ExternalInterface.addCallback("sendToActionScript", receivedFromJavaScript);
if (checkJavaScriptReady()) {
output.appendText("JavaScript is ready.\n");
} else {
output.appendText("JavaScript is not ready, creating timer.\n");
var readyTimer:Timer = new Timer(100, 0);
readyTimer.addEventListener(TimerEvent.TIMER, timerHandler);
readyTimer.start();
}
} catch (error:SecurityError) {
output.appendText("A SecurityError occurred: " + error.message + "\n");
} catch (error:Error) {
output.appendText("An Error occurred: " + error.message + "\n");
}
} else {
output.appendText("External interface is not available for this container.");
}
}
private function receivedFromJavaScript(value:String):void {
output.appendText("JavaScript says: " + value + "\n");
}
private function checkJavaScriptReady():Boolean {
var isReady:Boolean = ExternalInterface.call("isReady");
return isReady;
}
private function timerHandler(event:TimerEvent):void {
output.appendText("Checking JavaScript status...\n");
var isReady:Boolean = checkJavaScriptReady();
if (isReady) {
output.appendText("JavaScript is ready.\n");
output.appendText("ExternalInterface.objectID = " + ExternalInterface.objectID + "\n");
Timer(event.target).stop();
}
}
}
}
HTML:
<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>ExternalInterfaceExample</title>
<script>
var jsReady = false;
function isReady() {
return jsReady;
}
function pageInit() {
jsReady = true;
document.forms["form1"].output.value += "\n" + "JavaScript is ready.\n";
}
function sendToActionScript(value) {
document.getElementById("ExternalInterfaceExample").sendToActionScript(value);
}
</script>
</head>
<body onload="pageInit();">
<object id="ExternalInterfaceExample" name="ExternalInterfaceExample"
type="application/x-shockwave-flash" data="ExternalInterfaceExample.swf" width="550" height="400">
<param name="movie" value="ExternalInterfaceExample.swf"/>
<param name="quality" value="high"/>
<param name="allowscriptaccess" value="always"/>
<a href="http://www.adobe.com/go/getflash">
<img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player"/>
</a>
</object>
<form name="form1" onsubmit="return false;">
<input type="text" name="input" value="" />
<input type="button" value="Send" onclick="sendToActionScript(this.form.input.value);" /><br />
<textarea cols="60" rows="20" name="output" readonly="true">Initializing...</textarea>
</form>
</body>
</html>
मैं आपकी समस्या नहीं दिख रहा। कैमरे और माइक का उपयोग करने के लिए आपके उपयोगकर्ता के स्वायत्तता के बाद आपको रिकॉर्डिंग शुरू करनी है ... – akmozo
अच्छी तरह से समस्या है, मुझे नहीं पता कि फ्लैश की शुरुआत रिकॉर्डिंग घटना कैसे शुरू करें, चूंकि, यह फ्लैश की एक घटना है जिसका HTML html से कोई संबंध नहीं है। -_- –
@AlexRumba ने स्पष्ट किया ताकि स्पष्ट किया जा सके: घटना [उपयोगकर्ता ने माइक्रोफ़ोन की अनुमति दी] HTML-पक्ष पर आग लगती है, और आपको फ्लैश-साइड पर कुछ [क्रिया] को responce के रूप में करने की आवश्यकता है? यदि ऐसा है तो पेज पर फ्लैश और जावास्क्रिप्ट को एक-दूसरे के साथ खेलने के कुछ तरीके हैं। वे हमेशा विश्वसनीय नहीं होते हैं (क्रॉस-ब्राउज़र होने की भावना में) लेकिन अधिकांश भाग के लिए वे चाल करते हैं। यदि यह आपके लिए दिलचस्प है - मैं संचार के तरीकों के साथ एक उत्तर बना सकता हूं [एचटीएमएल से फ्लैश तक, एक तरफा केवल अनुमति] मुझे पता है। –