출처: http://deguls.tistory.com/

FLEX <-> Javascript 통신
보안샌드박스에러가 날땐 Object 태그에 allowScriptAcess 부분 설정을 변경해야 합니다.

HTML : sample.html
<script>
function SendToSWF(value){
    document.getElementById("externalcallswf").receive(value);
}
function Receive(value){
    document.getElementById("txtData").value = value;
}
</script>
<object id="externalcallswf" classid="clsid:.................>
<param name="무비경로" />
<param name="allowScriptAcess" value="allways" />
..
..
</object>


 

Flex : externalcalls.MXML
<?xml .... ?>
<mx:Application createComplete="initApp()" .....>
<mx:Script>
   <![CDATA[
    import flash.external.ExternalInterface;
    import flash.events.*;
    import mx.controls.Alert;

    private function initApp():void
    {
        if(ExternalInterface.available)
        {
             ExternalInterface.addCallback("receive", receive);
        }else{
            mx.controls.Alert.show("통신 불가..");
        }
    }

    private function receive(value:String):void{
            mx.controls.Alert.show(value);
    }

    private function sendToHTML(value:String):void{
           if(ExternalInterface.available)
           {
               ExternalInterface.call("Receive", value);
           }else{
               mx.controls.Alert.show("통신 불가..");
           }
    }
    ]]>
</mx:Script>


FLEX <-> C# (flex 부분은 상단과 동일 합니다.)
C# 어플리케이션에서 Flex나 Flash로 데이터를 보내거나 받으려면 아래와 같이 XML문서를 사용해야 합니다.
<invoke name="application name">
    <arguments>
        <string>문자열</string>
        <number>숫자형</number>
         ......
    </arguments>
</invoke>

Flash Object 참조방법 (단 플래시 플레이어가 Debug 버젼일 경우 윈폼 디자이너에 로드되지 않습니다.)
1. 참조 -> com -> Shockwave Flash 참조 추가
2. 도구상자 마우스 오른쪽 버튼 항목 선택 -> com 구성요소 -> Shockwave Flash 체크

C# Application
...
// 인보크 메세지 수신 이벤트 등록
this.axFlash.FlashCall += new AxShockwaveFlashObjects._IShockwaveFlashEvents_FlashCallEventHandler(this.axFlash_FlashCall);
...

// SWF로 데이터 전달
private void SendToSWF(string strData, int intData){
    string invokeXmlData = "<invoke name=\"TansInformation\"><arguments>";
    invokeXmlData += "<string>" + strData + "</string>";
    invokeXmlData += "<number>" + intData.ToString() + "</number>";
    invokeXmlData += "</arguments></invoke>";
    try
    {
         this.axFlash.CallFunction(invokeXmlData);          
     }catch{
         MessageBox.Show("인보크 메세지 전달 실패 \r\n\r\n" + invokeXmlData);
    }
}

// 플래시 전송 이벤트 수신
private void axFlash_FlashCall(object sender, AxShockwaveFlashObjects._IShockwaveFlashEvents_FlashCallEvent e)
{
    // xml 데이터
    XmlDocument XmlDoc = new XmlDocument();
    XmlDoc.LoadXml(e.request);
    XmlNodeList ArgumentList = XmlDoc.GetElementsByTagName("arguments");
   
    string XmlArguments = "";
    for(int i = 0;i<ArgumentList.Count;i++)
    {
        XmlArguments += ArgumentList[i].InnerText + Environment.NewLine;
    }
    MessageBox.Show(XmlArguments);
}
AND