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

등록일 : 2008년 01월 11일 | 조회수 : 3,120

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

                       
제공 : 한빛 네트워크
저자 : 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 데이터를 읽어야 된다고 가정해봅시다.
<STAFF>
  <EMPLOYEE>
    <NAME>Marco</NAME>
  <MANAGER>James</MANAGER>

  </EMPLOYEE>

  <EMPLOYEE>
    <NAME>Graham</NAME>
    <MANAGER>James</MANAGER>

  <EMPLOYEE>

  <EMPLOYEE>
    <NAME>James</NAME>
    <MANAGER>Dorian</MANAGER>

  </EMPLOYEE>
</STAFF>
위 자료에서 두 번째 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을 한번 써보세요. 그런 후 정말 괜찮은지, 맘에 드는지 판단하세요. 내 생각에 반드시 “그건 오해”였다고 생각하실 겁니다.




본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
21 [UX 디자인] 직관적 디자인(Intuitive Design) file 졸리운_곰 2016.10.08 609
20 [UX 디자인] 천재적 디자인(Genius Design) file 졸리운_곰 2016.10.08 550
19 [UX 디자인] 목표 지향 디자인 (Goal-Directed Design) file 졸리운_곰 2016.10.08 364
18 [UX 디자인] 사용자 중심 디자인(User Centered Design) file 졸리운_곰 2016.10.08 407
17 [UX 디자인] 기능 중심 디자인(Feature Centered Design) file 졸리운_곰 2016.10.08 408
16 [UX 디자인] 인터랙션 디자인의 7가지 접근 방법 졸리운_곰 2016.10.08 555
15 [웹 기획] 성공적인 웹사이트 구축을 위한 9가지 역할 file 졸리운_곰 2016.10.08 488
14 [웹 기획] 웹기획의 기본 - 사용자 경험(UX)의 5가지 계층 file 졸리운_곰 2016.10.08 408
13 [웹 기획] 8) 사용자 행동 방식 - 평균 사용자의 행동 패턴 file 졸리운_곰 2016.10.08 367
12 [웹 기획] 7) 사용자 행동 방식 - F자 형태의 웹 콘텐트 읽기 패턴 file 졸리운_곰 2016.10.08 492
11 [웹 기획] 6) 사용자 행동 방식 -[퀴즈] 사용자는 광고처럼 보이는 것을 무시한다 file 졸리운_곰 2016.10.08 527
10 [웹 기획] 4) 사용자 행동 방식 - 사용자는 광고를 피하고 싶어한다. Q file 졸리운_곰 2016.10.08 346
9 [웹 기획} 3) 웹기획의 기본 - 조직 규모에 따른 웹기획자의 역할 file 졸리운_곰 2016.10.08 451
8 [웹 기획] 2) 웹기획의 기본 - 웹사이트 구축을 위한 조직 형태와 역할 file 졸리운_곰 2016.10.08 641
7 [웹 기획] 1) 웹기획의 기본 - 웹기획자는 누구인가 file 졸리운_곰 2016.10.08 601
6 반응형 웹 기획 file 졸리운_곰 2016.10.08 699
5 한국형웹콘텐츠접근성지침2.1 file 졸리운_곰 2016.10.08 675
4 웹표준 가이드 firefox 사이트 crossbrowsing-v2 file 졸리운_곰 2016.10.08 397
3 홈페이지 평가 방법론 file 졸리운_곰 2014.12.09 529
2 웹사이트 평가 지표 졸리운_곰 2014.12.09 743
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED