메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

IT/모바일

ActionScript 3.0 : 어려울까요? 안 어려울까요? - (3)

한빛미디어

|

2008-01-11

|

by HANBIT

10,699

제공 : 한빛 네트워크
저자 : Colin Moock
역자 : 박주현
원문 : ActionScript 3.0: Is It Hard or Not?

짜야 될 코드량이 너무 많아요!

ActionScript 3.0의 마지막 오해 하나는 온라인에서건 오프라인에서건 자주 듣게 되는데 이는, “ActionScript 3.0 은 다 좋은데, 너무 고지식적이야! 간단한 거 만드는데도 코드가 너무 길어져!” 다음 두 예제는 제가 자주 ActionScript의 다변다용성을 알리는데 자주 사용하는 것들입니다.

1) ActionScript 1.0 이나 2.0으로 특정 URL을 접속하기 위해 다음의 코드를 씁니다.
getURL("http://www.moock.org");
ActionScript 3.0에서는 다음의 코드이고요.
navigateToURL(new URLRequest("http://www.moock.org"));
2) 특정 무비클립에 원하는 swf파일을 읽어오려면 ActionScript 1.0과 2.0에서는 다음과 같이 해야합니다.
someClip.loadMovie("foo.swf");
ActionScript 3.0에서는 이렇고요.
var loader:Loader = new Loader();
loader.load(new URLRequest("foo.swf"));
someClip.addChild(loader);
앞의 두 예제에서 중 ActionScript 3.0코드는 이전 버전의 코드보다 깁니다. 하지만 각각의 코드들만으로는 최근의 개발 트렌드를 반영할 수 없습니다. 제가 직접 프로그래밍을 해본 결과 ActionScript 3.0은 ActionScript 2.0과 1.0보다 항상 더 많은 코드가 필요한 건 아닙니다. 예를 들어 ActionScript 3.0에서 텍스트필드, 버튼, 무비클립등을 만들 때는 ActionScript 2.0 과 1.0 에서의 코드량과 비슷합니다. 여기 ActionScript 3.0과 그 이전 버전의 제대로 된 그 차이를 제대로 보여줄 수 있는 예제가 있습니다.
// ActionScript 1.0 와 ActionScript 2.0
someClip.createTextField("t", 1, 0, 0, 0, 0);
t.border = true;
t.text = "hello world";

// ActionScript 3.0
var t:TextField = new TextField();
t.border     = true;
t.text = "hello world";
someClip.addChild(t); 
단순히 보았을 때 ActionScript 3.0에서는 16번 이상의 타이핑이 더 필요합니다. 하지만 ActionScript 3.0의 구조적 차이는 여러 이점이 있습니다. 예를 들자면 ActionScript 3.0에서 다른 무비클립에 같은 텍스트필드를 하나 더 추가하기 위해 다음의 것을 하기만 하면 됩니다.
someOtherClip.addChild(t);
ActionScript 2.0과 1.0 에서는 이전의 코드에서 바로 간단히 텍스트필드를 복제 할 수 없습니다. 원하는 무비클립에 텍스트필드를 추가하도록 함수를 만들고, 추가된 텍스트 필드에 원래의 텍스트 필드의 정보들을 복사해 넣어야 합니다. 이렇게 하면 코드량이 많아지고 복잡해지는데, ActionScript 3.0에서는 이런 수고를 할 필요가 없습니다.

동일하게, ActionScript 3.0에서 기본적으로 정규표현식이나 events들이 제공되는데 반해 ActionScript 2.0 과 1.0에서는 이를 쓰기 위해 직접 만들거나, 다른 사람이 만든 것을 써야 하는데 이 때문에 더 많은 돈과 시간이 낭비됩니다.

게다가 이전 버전보다 더 간결해지는 예제도 많습니다. ActionScript 3.0의 XML 지원 시스템인 E4X가 그러합니다. 다음의 XML 데이터를 읽어야 된다고 가정해봅시다.

  
    Marco
  James

  

  
    Graham
    James

  

  
    James
    Dorian

  

위 자료에서 두 번째 EMPLOYEE의 NAME을 알기 위해 ActionScript 2.0과 1.0에서는 다음과 같이 해야 합니다.
staff.firstChild.childNodes[1].firstChild.firstChild
ActionScript 3.0 에서는 이렇습니다.
staff.EMPLOYEE[1].NAME
ActionScript 3.0의 코드가 더 짧고, 더 직관적입니다. 이제 MANAGER가 “James”인 모든 EMPLOYEE의 목록을 구해봅시다. ActionScript 2.0 와1.0 에서는,
var managedByJames = new Array();
for (var i = 0; i < staff.firstChild.childNodes.length; i++) {
  if (staff.firstChild.childNodes[i].childNodes[1].firstChild.nodeValue 
    ==  "James Porter") {
    managedByJames.push(staff.firstChild.childNodes[i]);
  }
}
ActionScript 3.0 에서는,
staff.*.(MANAGER == "James Porter")
ActionScript3.0의 코드가 훨씬 더 짧고, 훨씬 더 직관적입니다.

각 개개의 구문 코드 별 길이 비교에서는 ActionScript 3.0이 더 긴 상황도 있었고, 짧은 상황도 있습니다. 하지만 실제로 코딩해보면 ActionScript3.0쪽이 깔끔한 구조로 훨씬 더 짧게 작성할 수 있었습니다. 딱 맞게 맞추어져서 부가작업 없이 짤 수 있었던 깔끔한 구조들 덕분이었습니다.

믿어주세요!

이제 요점을 정리해 보겠습니다. FutureSplash 때부터 Flash를 계속 써온 개발자가 ActionScript 3.0의 사용을 기피 할 이유는 없습니다. 여전히 timeline에 직접 간단한 스크립팅 할 수 있고, 여전히 배우기 간단하고, ActionScript2.0과 1.0보다 코딩이 그다지 복잡한 것도 아니기 때문입니다.

반대로 내가 ActionScript 3.0을 처음 배워 사용해보았을 때, 간결한 API들과 Flex Builder의 coding assistance 기능으로 더 빠르게 프로그램을 만들 수 있었고, 이 후 유지보수도 더 쉽게 가능했습니다. 이를 써본 후 느낀 다른 장점들은 앞에서 설명한 것들 외에 아래에도 더 있습니다..
  • ActionScript 2.0 보다 훨씬 빠르다.
  • Binary소켓과 Binary data 접근
  • 향상된 텍스트 처리지원
  • 사운드 스펙트럼의 프로그래밍 가능
  • Flash CS3와의 자원관리에서의 높은 통일성 (참조 http://moock.org/lectures/ActionScriptAndFlashCS3/)
  • 무료 컴파일러와 개발프레임워크
  • 그리고 50가지 이유 더: Reasons ActionScript 3.0 Kicks Ass, by Grant Skinner.
제 견해? 괜히 너무 복잡하고 어려울 것 같아서 ActionScript3.0을 아직 안 써봤으면 ActionScript3.0이 쓰기 불편하다는 그런 거짓말 믿지 마세요. 한번 관심을 갖고서, 편견도 갖지 말고, 넓은 마음으로 한달 가량 ActionScript3.0을 한번 써보세요. 그런 후 정말 괜찮은지, 맘에 드는지 판단하세요. 내 생각에 반드시 “그건 오해”였다고 생각하실 겁니다.
TAG :
댓글 입력
자료실

최근 본 상품0