본문 바로가기

TechLog

C# 어플리케이션에서 플래시 사용하기 - 1 : Using Flash Object In C# Application

C# 어플리케이션에서 플래시 사용하기 - 1 : Using Flash Object In C# Application

Flash Movie와 연동하는 C# 어플리케이션을 만드는 방법을 소개합니다. 일반 어플리케이션에 Flash로 만든 UI를 제공하고자 할 때 응용하실 수 있겠습니다.

 

 

 

안녕하세요 Kenial입니다 : )

 

플 래시 무비를 애플리케이션에서도 사용할 수 있다는 것을 소개하는, 아주 간단한 내용입니다. Flash 개발 환경에 익숙지 않으신 분들은 주위의 플래셔를 붙잡아다가 옆에 앉혀놓고 함께 해 보시기 바랍니다. vs.net 2003, Flash MX 2004 버전 기준으로 작성되었습니다.

 

가급적 텍스트 분량을 줄이기 위해 본문에서는 존대말을 생략하도록 하겠습니다.

 

 

플래시 무비를 포함하는 어플리케이션 만들기

 

먼저 '도구 상자'에서 우클릭 -> '항목 추가/제거' 메뉴에서

다음과 같이 Shockwave Flash Object를 추가한다 :

 

 

그 다음 Shockwave Flash Object 컨트롤을 추가한다 :
(
그냥 더블클릭하면 axShockwaveFlash1이라는 이름으로 추가된다)

 

 

Movie 속성에 플래시 파일의 경로를 미리 지정해줘도 좋지만, Kenial 경우에는 프로그램을 배포할 때 swf 파일을 프로그램의 경로에 넣어 같이 배포할 예정이므로, 다음과 같이 코딩하였다 :

 

 

 

 

 

private void Form1_Load(object sender, System.EventArgs e)
{
        //
프로그램이 실행되는 현재 경로를 파일 이름 앞에 덧붙여줌
        axShockwaveFlash1.Movie = System.IO.Directory.GetCurrentDirectory() + "\\test.swf";
}

 

 

 

 

 

그리고 플래시 무비를 하나 만들어보자.
일단 플래시 무비와 어플리케이션의 연동을 해야 하니, 가장 만만한 버튼을 하나 추가해보도록 하자 :

 

 

 

test.swf 파일을 Publish해서, 프로그램이 실행되는 경로 (프로젝트/bin/Debug 혹은 프로젝트/bin/Release)에 넣어놓으면 일단 플래시 무비가 뜨는 어플리케이션을 실행할 수 있다.

 

실행 화면 :

 

 

 

 

플래시 무비에서 어플리케이션 코드 호출하기

 

일단 플래시 무비를 어플리케이션에 얹기는 했지만, 이것만으로는 단지 좀더 프레임 수가 많은 Animated GIF에 불과할 뿐이다. 아까 플래시 무비에 추가한 버튼을 가지고 C# 어플리케이션과 연동되도록 만들어 보자.

 

플 래시 무비에서는 그 자신을 포함하는 컨테이너(=웹 브라우저)와의 연동하는 방법으로 보통 FSCommand를 사용한다. 자바스크립트에서 쓸 수 있는 스타일과 비슷하게 사용할 수 있으므로 웹에서 FSCommand를 사용해 본 경험이 있는 사람은 좀 더 편하게 사용할 수 있겠다. 그리고 ActiveX Event가 구현되어 있으므로, 그대로 C# Delegate에 할당하여 사용할 수 있다.

 

사용법은 간단하다.
플래시 무비의 ActionScript에서 fscommand(command, param); 를 호출하면 axShockwaveFlash1.FSCommand Delegate가 호출되고, 어플리케이션에서는 Delegate에 할당한 함수에서 전달받은 command param의 값을 처리하도록 코딩하면 된다.

 

먼저 플래시 무비의 버튼에 fscommand() 함수를 넣자 :

 

 

ActionScript 에 전혀 문외한인 사람을 위해 첨언하자면, 위 화면은 버튼의 click 이벤트에 반응하는 코드를 입력한 상태이다. vs 기반의 프로그래머 입장에서 보자면 개발 환경이 좀 맘에 안들 수도 있겠지만, 일단 플래시에서의 코딩 환경은 좀 이질적이므로 적응해두도록 하자.

 

어쨌든 플래시에서의 코딩은 이것으로 끝.

 

그 다음 vs.net에서는 FSCommand Delegate에 함수를 할당하자 :

 

 

 

 

 

this.axShockwaveFlash1.FSCommand +=

new AxShockwaveFlashObjects._IShockwaveFlashEvents_FSCommandEventHandler(this.axShockwaveFlash1_FSCommand);

...
private void axShockwaveFlash1_FSCommand(
        object sender, AxShockwaveFlashObjects._IShockwaveFlashEvents_FSCommandEvent e)
{
        if(e.command=="test")
        {
                System.Windows.Forms.MessageBox.Show(e.args);
                Application.Exit();
        }
}

 

 

 

 

 

 

위 코드는 param 값을 메시지박스로 보여주고 어플리케이션을 종료하는 코드이다.


실행 화면 :

 

 

 

정리

 

Macromedia 사의 Flash는 웹에서 동적인 UI를 제공하는데 필수적인 요소가 된지 오래입니다. 게다가 Macromedia사는 최근 RIA(Rich Internet Application) 라는 개념을 소개하면서, 웹 기반의 애플리케이션 환경으로 기존 Client/Server 환경을 대체하려는 시도를 하고 있습니다. (Flex라는 제품이 그 시도의 결과물입니다)

 

그런 면에서 보자면, 지금 시점의 이 아티클은 좀 때늦은 내용인지도 모르겠습니다만 ^^; 풍부한 UI를 중소규모의 Client/Server 환경에 제공할 경우에는 유용하게 쓰실 수 있을 겁니다.

 

그럼 : )