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

한빛출판네트워크

한빛랩스 - 지식에 가능성을 머지하다 / 강의 콘텐츠 무료로 수강하시고 피드백을 남겨주세요. ▶︎

IT/모바일

자바스크립트 프로그래머를 위한 액션스크립트

한빛미디어

|

2002-01-14

|

by HANBIT

13,440

저자: 브루스 엡스타인(Bruce A. Epstein), 『창시자 게리 그로스먼과 함께 배우는 플래시 액션스크립트』의 편집자 아마도 여러분은 웹사이트에 매크로미디어 플래시 프론트 엔드를 추가해 달라는 의뢰인의 부탁을 받은 적이 있을 것이며 이럴 경우 플래시 액션스크립트 스크립팅 언어를 빨리 습득해야 할 필요가 있다. 그렇지 않으면 여러분은 플래시를 쓰느냐, 그렇지 못하냐로 평가 받을 것이 분명하다. 이때 여러분은 액션스크립트를 포용하여 이 언어를 배울 것인지 아니면 그렇지 않고 액션스크립트에 대한 경멸을 보일 것인지도 결정해야 한다. 이미 플래시는 웹사이트 역사상 가장 널리 사용되는 브라우저 플러그인으로 인식되고 있다. 기타 인기있는 웹사이트를 포함하여 디즈니 웹사이트는 플래시를 아주 당연하게 사용하고 있으며 오늘날 플래시에 대해 얼마나 자세하게 알게 될 것이냐는 시간문제에 지나지 않는다. 필자는 때때로 플래시 개발자들이 저지르는 서투른 UI 디자인에 대한 변명이나 늘어놓으려고 이 기사를 쓰는 것은 아니다. 필자는 여러분이 갖고 있는 자바스크립트에 대한 지식을 이용해 액션스크립트 환경에서도 훌륭히 작업할 수 있도록 도움을 주기위해 이 기사를 작성하고 있는 것이다. 액션스크립트에 대해서는 조금 알고 있지만 자바스크립트에는 미숙한 프로그래머라 할지라도 이 기사가 여러분에게 제공하는 유용성은 똑같을 것이다. 우선 우리는 액션스크립트와 자바스크립트 모두에서 발견되는 공통점부터 살펴본 후 용법을 명령하는 환경상의 차이점에 대해 알아볼 것이다. 그리고 마지막으로 이 두 언어에서 꼭 알아두어야 할 차이점에 대해 간단히 살펴볼 것이다. 아이러니컬하지만 플래시 5에서 사용되는 액션스크립트는 자바스크립트와 훨씬 더 유사한 점이 많은데 이는 플래시 4의 액션스크립트가 완전히 다른 모델을 사용했기 때문일 것이다. 특히 『창시자 게리 그로스먼과 함께 배우는 플래시 액션스크립트(ActionScript: The Definitive Guide)』의 저자인 콜린 무크는 부록까지 마련하여 하위 호완성(부록 C 참고) 및 액션스크립트와 자바스크립트 사이의 차이점(부록 D 참고)에 대해 자세한 설명을 하는 등 이 부분에 대한 특별한 관심을 보이고 있다. 두 언어는 모두 ECMA-262 (ECMAScript) 표준에서 유래했다 자바스크립트와 액션스크립트는 모두 ECMA-262 (ECMAScript) 표준에 기반을 두고 있다. 따라서 이 두 언어는 거의 똑같은 구문, 객체 모델, 심지어는 상당수의 객체 클래스까지 공유한다. 만약 여러분이 『자바스크립트 핵심 가이드(JavaScript: The Definitive Guide)』를 읽어봤다면 액션스크립트를 읽고 쓰는데 큰 문제는 없을 것이다. 예를 들어 액션스크립트는 callee와 length 프로퍼티를 지원하는 arguments 객체를 자바스크립트처럼 구현해낸다. 이 외에도 액션스크립트는 Array, Boolean, Date, Math, Number, Object, String 클래스를 자바스크립트 프로그래머들과 유사하게 구현해 낸다. 물론 액션스크립트는 자바스트립트처럼 C와 거의 같은 연산자 및 도트 구문을 사용한다. 문자열로부터 공간을 없애주는 이 간단한 함수는 자바스크립트 프로그래머들에게도 친숙해 보여야 한다.
function stripSpace (inString) {
   var outString = "";
   for (i = 0; i < inString.length; i++) {
     if inString.charAt(i) != "" {
       outString += inString.charAt(i);
     }
   }
   return outString
}
액션스크립트는 자바스크립트와 똑같은 데이터형을 사용하며 표현식이 숫자 상수인 NaN과 동등한지 테스트하기 위한 isNaN()과 같은 함수도 포함하고 있다. 환경적 차이: 브라우저 Vs 플래시 플러그인 자바스크립트와 액션스크립트가 공통점이 많다고는 하지만 이 두 가지가 아무것도 거치지 않고서 작동되는 것은 아니다. 클라이언트측 자바스크립트는 몇몇 중요한 컨시퀀스를 가진 브라우저 내에서 작동된다. 따라서 자바스크립트는 브라우저 환경에 접근하고 제어하는 Document 및 Window 객체를 많이 사용한다. 그러나 액션스크립트는 자바스크립트와 똑같은 DOM (Document Object Model)을 사용하지 않기 때문에 이러한 위에서 언급한 객체를 지원하지 않는다. 마찬가지로 액션스크립트는 브라우저가 보여주는 URL에 접근하는 History 객체를 지원하지 않는다. 플래시 .SWF 파일들은 HTML 페이지 내의 자산이기 때문에 .SWF 파일들은 HTML 문서나 브라우저 윈도우 정보에 직접적인 접근은 하지 않는다. 액션스크립트는 이러한 것들을 자바스크립트와 커뮤니케이션함으로써 간접적으로 접근할 수 있다. (비록 액션스크립트와 자바스크립트의 커뮤니케이션이 특정 브라우저와 플랫폼의 조합으로 제한된다 하더라도 일반적으로 액션스크립트는 자바스크립트보다 서로 다른 브라우저와 플랫폼에서 일관성을 유지한다.) 물론 플래시 플러그인은 브라우저 자체에 따라 서로 다른 환경을 가진다. 무비 클립은 플래시 타임라인에 있는 자동 엔티티다. 그래서 시간의 경과에 따라 조작되고 애니메이션화 될 수 있다. 무비 클립은 메인 플래시 타임라인 위에 나타날 수 있거나 다른 무비 클립 내에 삽입되어질 수도 있다. 따라서 액션스크립트 프로그래밍은 무비 클립을 통제하기 위해 MovieClip 객체 클래스의 사용에 부담을 준다. 물론 무비 클립이 자바스크립트와 직접적인 병렬관계에 있는 것은 아니지만 관련 사항을 모두 설명하기위해 온라인상에 『창시자 게리 그로스먼과 함께 배우는 플래시 액션스크립트』의 무비 클립 챕터를 올려놓았다. 이 두 환경에서 부딪히게 될 가장 큰 차이점은 코드를 쓸 위치와 변수의 범위를 이해하는 것이다. 다시 한 번 말하지만, 『창시자 게리 그로스먼과 함께 배우는 플래시 액션스크립트』는 퀴즈 애플리케이션을 예제로 사용하여 이 차이점에 대해 아주 자세하게 설명하고 있다. 언어 구현의 차이점 우리는 이미 자바스크립트와 액션스크립트가 사용되는 환경에 따른 두 언어 간의 차이점에 대해 살펴보았다. 그리고 액션스크립트가 자바스크립트보다 브라우저와 플랫폼에 상관없이 더 일관성을 유지하는 경향이 있다는 사실에 대해서도 알아보았다. 자바스크립트는 변종에 따라 각각의 브라우저를 구현하는데 반해 액션스크립트는 매크로미디어라는 단일 벤더에 의해 통제되기 때문이다. 플래시 5의 액션스크립트는 자바스크립트의 특정 버전과 직접적인 관련은 없으며 자바스크립트의 모든 버전이 ECMA-262 표준을 따르지는 않는다는 점을 명심하기 바란다. 또한 어도비 라이브모션에서의 스크립팅 언어와 같은 서드 파티 모방은 액션스크립트와의 완전한 호환성을 제공하지는 않는다. 구조적 지시를 넘어서 플래시 5의 액션스크립트는 때때로 플래시 4와의 하위 호환성을 유지하거나 플래시 플러그인 (또는 플래시 플레이어 라고도 부름) 크기를 최소화하기 위해 ECMA-262 표준을 벗어난다. 예를 들어 액션스크립트는 정규 표현식을 지원하지 않을 뿐만 아니라 런타임 컴파일러를 요구하는 eval() 함수를 일부만 지원한다. 『창시자 게리 그로스먼과 함께 배우는 플래시 액션스크립트』의 부록 D는 ECMA-262와 자바스크립트가 액션스크립트와 어떤 차이점이 있는지를 설명하고 있다. 특별히 큰 차이점에 대해 설명하자면 다음과 같다.
문자열 - 부울 변환
ECMA-262에서는 비어있는 문자열을 제외한 모든 문자열이 true로 변환된다. 액션스크립트는 0이 아닌 숫자로 변환될 수 있는 문자열만 true로 변환된다.
대소문자
액션스크립트의 경우 키워드에서는 대소문자를 구분하지만 인식자에서는 대소문자를 구분하지 않는다. 이것은 대소문자를 철저하게 구별하는 ECMA-262과는 일치하지 않는 부분이다.
이벤트 핸들러 이름
액션스크립트는 onMouseOver()과 같은 이벤트 핸들러 이름을 사용하지는 않는다. 그 대신 onClipEvent (eventName)나 on(eventName)과 같은 형식의 이벤트 핸들러 이름을 사용한다.
Undefined 데이터형 변환
액션스크립트는 undefined 값을 문자열이 들어갈 자리에 사용하면 비어있는 문자열 ("")로, 숫자가 들어갈 자리에 사용하면 0으로 변환된다. ECMA-262에서는 undefined를 문자열로 변환하면 "undefined"라는 문자열로, 숫자로 변환하면 NaN으로 변환된다.
Switch 선언문
액션스크립트는 if-then 선언문 사용을 에뮬레이트한 switch 선언문(또는 case 선언문이라고도 부름)을 지원하지 않는다.
유니코드 지원
액션스크립트에서는 Latin 1 및 Shift-JIS 문자 세트는 지원하지만 유니코드는 완벽하게 지원하지 않는다.
필자는 액션스크립트와 자바스크립트가 크게 다르지 않다는 점을 보여주는 이 기사로 인해 여러분이 액션스크립트에 충분히 익숙해졌기를 바란다(물론 반대의 경우도 마찬가지임). 비록 몇 가지이지만 두 언어의 구현에 있어서 매우 중요한 차이점을 아는 것은 두 환경에 상관없이 여러분이 갖고 있는 지식을 100% 또는 그 이상 이용할 수 있게 해 줄 것이다. 마지막으로 플래시 5의 무료 시험 버전은 매크로미디어의 웹사이트에서 이용할 수 있다. 브루스 엡스타인(Bruce A. Epstein)은 『Director in a Nutshell』과『Lingo in a Nutshell』를 집필했으며 『Dreamweaver in a Nutshell』은 공동 집필했다. 또한 『ActionScript: The Definitive Guide』을 편집하기도 하였다.
TAG :
댓글 입력
자료실

최근 본 상품0