Posted
Filed under C#
1. Flash Player 설치

2. VS2005 도구상자(Toolbox) - 항목선택(Choose Items) - COM 구성요소(Components) - Shockwave Flash Object 추가

3. AxInterop.ShockwaveFlashObjects.dll 을 Flash 를 사용하는 프로젝트의 obj/Debug 폴더 안에 추가

4. 도구상자에 추가된 SFO(ShockwaveFlashObject)를 디자인 창으로 가져온다.

 

c# 코드===================

private void axShockwaveFlash1_FlashCall(object sender, AxShockwaveFlashObjects._IShockwaveFlashEvents_FlashCallEvent e)
        {
            //Flash 로부터 정보 받기
            XmlDocument XmlDoc = new XmlDocument();
            XmlDoc.LoadXml(e.request);

            XmlNodeList ArgumentList = XmlDoc.GetElementsByTagName("arguments");

            String XmlArguments = ArgumentList[0].InnerText;// +Environment.NewLine;
            String[] arg = XmlArguments.Split('|');

            if (arg[0] == "GetWaitList")
                MessageBox.Show("Success");


        }   public Form1()
        {
            InitializeComponent();
            this.axShockwaveFlash1.FlashCall +=
              new AxShockwaveFlashObjects._IShockwaveFlashEvents_FlashCallEventHandler(this.axShockwaveFlash1_FlashCall);

        }


        private void axShockwaveFlash1_FlashCall(object sender, AxShockwaveFlashObjects._IShockwaveFlashEvents_FlashCallEvent e)
        {
            //Flash 로부터 정보 받기
            XmlDocument XmlDoc = new XmlDocument();
            XmlDoc.LoadXml(e.request);

            XmlNodeList ArgumentList = XmlDoc.GetElementsByTagName("arguments");

            String XmlArguments = ArgumentList[0].InnerText;// +Environment.NewLine;
            String[] arg = XmlArguments.Split('|');

            if (arg[0] == "ButtonClick")
            {
                MessageBox.Show("ButtonClick Success");
               
            }
            else if (arg[0] == "ReceivedFlex")
                MessageBox.Show("ReceivedFlex Success");


        }

        private void sendToFlash(string value1, string value2)
        {
            string args;

            args = "<invoke name=\"receive\" returntype=\"xml\">";
            args += "<arguments>";
            args += "<string>" + value1 + "</string>";
            args += "<string>" + value2 + "</string>";
            args += "</arguments>";
            args += "</invoke>";

            //Call Flash Function

            this.axShockwaveFlash1.CallFunction(args);

        }

        private void button1_Click(object sender, EventArgs e)
        {
            sendToFlash("SendToFlex", "bb");
        }

    }


Flex 코드 ======================

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="initApp()">
 
 <mx:Script>
  <![CDATA[
  import flash.external.ExternalInterface;
  import flash.events.*;
  import flash.utils.*;
  import flash.events.TimerEvent;
  import mx.controls.Alert;
  import flash.display.*;
 
  private function initApp():void
  {   
   if(ExternalInterface.available)
   {
    ExternalInterface.addCallback("receive", receive);    
   }
   
  }
 
  private function gender():void
  {
   ExternalInterface.call("call", "ButtonClick|");
 
  } 
 
  private function receive(value1:String, value2:String):void
  {
   if(value1=="SendToFlex")
   {    
   
   // mx.controls.Alert.show("통신 불가");
    ExternalInterface.call("call", "ReceivedFlex|");
   
   }
   
  }
 
  ]]>
 </mx:Script>
 <mx:Button x="137.5" y="370" label="Button" width="202" height="111" click="gender();"/>
  <mx:Text text="육심원" width="238" height="114" fontSize="36" fontWeight="bold" fontFamily="Georgia" textAlign="center" x="119.5" y="290" id="Textbox1"/>
 
</mx:Application>


[출처] c# flash 연동|작성자

2009/07/17 19:14 2009/07/17 19:14