Realman's World

[C#] Flash와 연동하기 본문

Language/C#

[C#] Flash와 연동하기

리얼맨 2009. 6. 15. 10:37
솔루션을 개발하다 보면 flash와 C# 을 연동하게 될 경우가 종종 있다.
이번 프로젝트에서도 급 지령을 받고 부랴부랴 이래저래 검색을 하여 적용하였다.
하면서 이래저래 어려운 점이 많아 애를 먹었는데 다음에는 고생하지 말아야지~ㅎ

1. SWF 파일 C#에 나타내기
   ① 참조 파일에 AxShockwaveFlashObjects.dll 파일을 추가 시킨다. (첨부 파일 참조)


   ② 우선 도구 상자에 Shockwave Flash Object를 추가 시킨다.




  ③ Shockwave Flash Object를 선택하여 Form 추가 시킨다.
      이때 종종 아래와 같은 경고창이 뜬다.


      이럴 경우 솔루션 다시 빌드를 살포시 해주면 문제는 깔끔히 해결된다.

  ④ Shockwave Flash Object 객체 이름을 변경한 후 Movie 를 설정한다.

            flaTop.Movie = System.IO.Directory.GetCurrentDirectory() + "\\SWF\\TOP_01.swf";

2. Flash 에서 C#으로 정보 넘기기

  ① Flash
    - C#으로 데이터를 넘기를 부분에 fscommand 함수를 사용한다.

           fscommand(command, parameter);

  ② C#
    - Flash에서 호출하는 fscommand의 이벤트 핸들러를 작성한다.
      이때 파라미터에는 fscommand에서 넘긴 command와 parameter 변수가 넘어온다.

void flaTop_FSCommand(object sender,  flaTop._IShockwaveFlashEvents_FSCommandEvent e)
{
switch(e.command)
{
case "exec":
MessageBox.show(e.args);
break;
case "exit" :
this.Close();
break;
}
}

3. C#에서 Flash로 정보 넘기기

  ① Flash
    - 변경되는 변수를 지정한다. (예: txtUserID, txtLocalIP)

var txtUserID:String = "";
var txtLocalIP:String = "";

    - 지정된 변수가 변경되었을 때 이를 인식하고 Flash에 반영하는 함수를 정의한다.

 // 변수가 변경되면 실행되어질 callback 함수
watchCallback = function (id, oldval, newval):String {

 
 //변경된 값은 newval 을 통해 받습니다.
if(id == "txtUserID"){
userID.text = newval;
}
else if(id == "txtLocalIP"){
localIP.text = newval;
}
  
return newval;
};

    - 정의된 함수를 실행시킨다.

_root.watch("txtUserID", watchCallback);
_root.watch("txtLocalIP", watchCallback);

  ② C#
    - SetVariable함수를 이용하여 Flash로 정보를 넘긴다.

            flaTop.SetVariable("txtUserID", Hitops3Param.USER_ID);
            flaTop.SetVariable("txtLocalIP", Hitops3Param.LOCAL_IP);
Comments