<XML 을 이용한 플래시 액션 스크립트 마스터>
외부에서 XML 문서를 플래시로 불러오기
Chapter. 9
XML 을 이용한 플래시 액션 스크립트 마스터
Copyright ⓒ 2009 All rights reserved 2/2
- 8 시차 교육에서는 플래시 내부에서 XML 문서를 적성 하였습니다. 실재로 XML 데이터를 이용하여
플래시에 적용하려면 내부 보다는 외부에서 작성된 XML 데이터를 불러와서 작업을 할 경우가 많이
발생 합니다. 이번 교육 시간에는 외부에서 XML 파일을 불러와서 작업하는 방법을 알아보도록
하겠습니다.
1. 이벤트(Event)
- 이벤트는 플래시에서 액션을 구현하게 하는 근본적인 원인을 제공하는 것으로 플래시 무비 재생 시
발생하는 모든 사건을 즉, 프레임 재생순서, 버튼 반응, 키보드 선택 등에 의해 발생되는 모든 동작을
말 합니다. 다시 말해 플래시에서 내부적으로 코드를 실행시키는 것이 바로 이벤트입니다.
- 플래시에서는 이벤트가 크게 3 가지로 나누어 볼 수 있습니다. 타임라인의 프레임이 진행되면서
발생하는 프레임 이벤트, 버튼 인스턴스를 마우스로 선택하면서 발생하는 버튼 이벤트, 무비클럽
인스턴스를 통해서 발생하는 무비 이벤트가 있습니다.
※ 인스턴스( Instance ) : 일반적으로 어떤 집합에 대해서, 그 집합의 개별적인 요소. 객체 지향
프로그래밍(OOP)에서, 어떤 등급에 속하는 각 객체를 인스턴스라고 한다.
① 프레임 이벤트(Frame Event)
플레이 헤드가 프레임에 진입했을 때 발생하는 것으로 매 프레임 마다 발생 합니다.
② 버튼 이벤트(Button Event)
버튼 클럽에서 버튼에 대한 액션이 발생할 때 수행되는 이벤트로 8 가지 이벤트 종류가 있습니다.
③ 무비클럽 이벤트(MoveClip Event)
무비 클럽에서 무비클럽에 대한 어떤 액션이 발생할 때 수행되는 이벤트로 9 가지 이벤트가 있습니다.
Chapter 9. 외부에서 XML 문서를 플래시로 불러오기
XML 을 이용한 플래시 액션 스크립트 마스터
Copyright ⓒ 2009 All rights reserved 3/3
2. 이벤트 핸들러(Event Handler)
- 프레임, 버튼, 무비클럽 이벤트가 발생할 때 마다 이를 제어하는 액션스크립트를 이벤트 핸들러라
합니다. 따라서 이벤트 핸들러 역시 3 가지가 있습니다.
- 버튼 이벤트 핸들러는 "on" 이벤트를 사용하고, 무비클럽 이벤트 핸들러는 "onClipEvnet" 이벤트를
사용합니다. 그리고 프레임 이벤트는 하나만 존재하기 때문에 핸들러거 필요가 없습니다. 플래시
MX 에서는 위에 정의 한 이벤트 말고도 특수한 객체에 이벤트 핸들러 를 지원합니다. 특수한 객체는
Loadvars, XML, XMLSocket 등을 말 합니다.
- 이러한 특수한 객체에는 "onLoad"속성이 공통적으로 존재함으로 이벤트 핸들러에 사용 할 수가
있습니다. 그리고 특수한 객체를 핸들러로 지정된 함수를 콜백 함수라고 합니다.
Tip LoadVars(객체)와 XMLSocket(객체)
① LoadVars(객체)
플래시 무비와 서버 사이에서 변수를 전송하는데 loadVariables 액션을 대신하여 사용할 수
있습니다. 그리고 XML 객체와 유사한 기능을 수행합니다. loadVars 객 체와 XML 객체의 차이점은
loadVars 가 액션스크립트 이름과 값을 쌍으로 전송하 는 반면 XML 객체 경우에는 XML DOM
트리를 저장한다는 점입니다. 또한 loadVars 객체의 인스텐스를 만들기 위해서는 해당 메서드를
호출하기 전에 new loadVars() 생성자를 사용해야 합니다.
② XMLSocket(객체)
XMLSocket 객체는 Flash Player 를 실행 중인 컴퓨터가 IP 주소 또는 도메인 이름으로 식별되는
서버 컴퓨터와 통신할 수 있게 해주는 클라이언트 소켓을 구현합니다. XMLSocket 객체는 실시간
채팅 시스템 같이 낮은 대기 시간을 요구하는 클라이언트-서버 응용 프로그램에 유용합니다.
- XMLSocket(객체)의 사용 방법은 아래와 같습니다.
[객체]
myXML = new XMLSocket();
[메서드]
myXML.close : 열러 있는 소켓 연결을 닫습니다.
myXML.connect : 지정된 서버에 연결 합니다.
myXML.send : XML 객체를 서버로 보냅니다.
[이벤트 핸들러]
myXML.onClose : XMLSocket 연결이 닫힐 때 호출되는 콜백 함수입니다.
myXML.onconnect : XMLSocket 이 연결될 때 호출되는 콜백 함수입니다.
myXML.onData : XML 메시지가 서버에서 다운로드 되었을 때 호출되는 콜백 함수입니다.
myXML.onXML : XML 객체가 서버로부터 도착할 때 호출되는 콜백 함수입니다.
XML 을 이용한 플래시 액션 스크립트 마스터
Copyright ⓒ 2009 All rights reserved 4/4
- 아래의 그림은 플래시 무비가 재생하면서 액션스크립트가 작동하는 전체적인 구조를 보여주고 있는
모습입니다. 플래시 무비가 재생하면서 프레임 진행과 사용자 버튼, 키보드 선택 등의 행동이 발생하고
이러한 행동과 진행에 다른 3 가지 이벤트가 발생 합니다. 발생한 이벤트에 대한 제어 내용을 가지고
있는 핸들러에는 제어하기 위한 구체적인 방법을 제공하기 위한 액션스크립트가 있어 이벤트 상황에
맞는 액션을 실행 합니다.
- 버튼 이벤트 핸들러 : 버튼 심벌에는 다음과 같은 이벤트 핸들러를 지원합니다.
① on(press) 버튼은 마우스로 클릭할 때
② on(release) 버튼을 마우스로 클릭하고 뗄 때
③ on(releaseOutside) 버튼을 마우스로 클릭하고 바깥쪽에서 뗄 때
④ on(rollOver) 버튼 위로 마우스로 커서를 올려놓을 때
⑤ on(rollOut) 버튼 위에 올려있던 마우스 커서를 밖으로 벗어날 때
⑥ on(dragOver) 버튼을 클릭하여 바깥쪽으로 드래그 했다가 다시 버튼의 안쪽으로 드래그 할 때
⑦ on(dragOut) 버튼을 클릭하여 바깥쪽으로 드래그 할 때
⑧ on(keyPress) 키보드의 특정한 키를 눌렀을 때
- 무비 이벤트 핸들러 : 무비클럽 심벌에는 버튼 심벌에 지원되는 모든 이벤트 핸들러와 함께 다음의
이벤트 핸들러를 추가로 지원합니다.
① onLoad : 스테이지에 처음 나타난 경우
② onUnLoad : 스테이지에서 사라진 경우
③ onEnterFrame : 스테이지에 존재하는 동안 계속해서 이벤트를 발생시키는 경우
④ onMouseDown : 마우스를 클릭한 경우
⑤ onMouseUp : 마우스를 뗀 경우
⑥ onMouseMove : 마우스를 움직일 때
⑦ onData : ASP, PHP 와 같은 외부에 존재하는 데이터를 플래시 내부로 불러들여 전송이 끝난 경우
3. 외부에서 XML 문서를 플래시로 불러오기를 알아보도록 하겠습니다.
- 먼저 실습에 필요한 XML.load() 메서드와 XML.onLoad 이벤트 핸들러에 대하여 알아야 합니다.
▶ XML.load() 메서드 : XML 문서를 불러와서 XML 계층구조로 변환하는 메서드이다.
⇒ 사용형식 : XML.load("불러올 XML 문서")
▶ XML.onLoad() 이벤트 핸들러 : XML 문서가 모두 외부에서 받아지고 난 후 자동으로 지정된
함수(콜백)를 호출 하는 이벤트 핸들러이다.
⇒ 사용형식 : XML.onLoad = 함수명;
XML 을 이용한 플래시 액션 스크립트 마스터
Copyright ⓒ 2009 All rights reserved 5/5
[실습 예제 1] 외부에서 저장된 XML 파일을 불러와 아래와 같은 결과 나오도록 문서를 작성해 보도록
하겠습니다.
① 아래의 XML 문서를 아래와 같이 EDIT 에서 작성 한 후 C 장치 아래에 "work"폴더에 "학생.xml"로
저장 합니다.
※ TIP 입력소스 1
<?xml versoin ="1.0" ?>
<학생>
<이름>홍길동</이름>
<학번>20081213</학번>
<Tel>02-1234-3456</Tel>
<주소>서울</주소>
</학생
② 아래의 화면과 같이 "1 번 프레임"을 클릭하고 F9 버튼을 눌려서 [액션 스크립트]작업창 상태로 이동
한 다음 [액션]메뉴를 클릭한 다음 화면에 출력하기 위해 [브라우저/네트워크]메뉴를 선택한 후 아래에
있는 소스를 입력 합니다.
XML 을 이용한 플래시 액션 스크립트 마스터
Copyright ⓒ 2009 All rights reserved 6/6
※ TIP 입력소스 2
1. System.useCodepage=true
2. myXml = new XML();
3. myXML.onLoad = loadEND;
4. myXML.load("학생.xml")
5.
6. function loadEnd()
7. {
8. //trace(mtXML)과 같음
9. trace(this)
10. }
③ 소스 설명
• 1 번 라인 : System.useCodepage=true
→ 한글이 나타나지 않거나 깨어지는 것을 방지하기 위하여 정의한 것입니다. 그리고 위의 코드는
ANSI(미국표준협회)코드 형식으로 저장 한다는 뜻입니다.
• 2 번 라인 : myXML = new XML();
→ myXML 에 사용할 객체 "XML()"를 생성 한 것입니다. 이렇게 되면 myXML 는 XML 클래스에 정의
한 속성을 사용 할 수 있습니다.
• 3 번 라인 : myXML.onLoad = loadEND;
XML 을 이용한 플래시 액션 스크립트 마스터
Copyright ⓒ 2009 All rights reserved 7/7
→ "학생.xml" 파일이 모두 로딩이 되면 loadEND 함수를 실행 합니다.
• 4 번 라인 : myXML.load("학생.xml")
→ "학생.xml" 파일을 읽고 XML 겍체 계층으로 변환 합니다.
• 6 번 라인 : function loadEnd()
→ 3 번 라인의 onLoad 에 의하여 이벤트 핸들러가 지정한 콜백 함수입니다.
"학생.xml" 파일이 모두 로딩이 되면 자동으로 loadEND 함수를 실행 합니다.
• 9 번 라인 : trace(this)
→ "this"란 myXML 객체를 말 합니다.
④ 플래시에 입력한 문서를 C 장치 아래에 "work"폴더에 "외부호출.fla"로 저장 합니다.
⑤ 입력된 XML 문서를 플래시에서 실행 해 봅니다. 플래시 무비 테스트는 키보드에 있는 ctrl 키를
누른 상태에서 enter 키를 누르면 아래와 같이 화면에 출력 됩니다.
[실습 예제 2] 외부에서 저장된 XML 파일을 불러와 아래와 같은 결과 나오도록 문서를 작성해 보세요.
조건 1) XML 문서를 아래와 같이 EDIT 에서 작성 한 후 C 장치 아래에 "work" 폴더에 "제품.xml"로 저장
합니다.
※ TIP 입력소스 1
XML 을 이용한 플래시 액션 스크립트 마스터
Copyright ⓒ 2009 All rights reserved 8/8
<?xml versoin ="1.0" ?>
<제품>
<분류>C001</분류>
<품명>아반테</품명>
<가격>1000 만원</가격>
</학생>
조건 2) 플레시 문서 파일은 C 장치 아래에 "work"폴더에 "제품.fla"로 저장 합니다.