Tag: 속성
액션스크립트 3.0 입문자를 위한 F1 도움말(레퍼런스) 보는 방법
by 세계의끝 on 1.13, 2010, under 고수들은 가르쳐주지 않는 AS3.0 입문
우리가 흔히 F1 또는 레퍼런스라고 부르는 플래시 도움말이 있습니다. 개발자들 사이에서는 이 레퍼런스의 형식을 ASDoc(ActionScript Documentation) 이라고 부르기도 합니다.[01]
Java 개발자들을 위한 JavaDoc 도 구경해볼까요? J2EE 의 1.4 버전 레퍼런스 입니다.
구글에서 개발한 스마트폰 운영체제인 안드로이드도 개발자들을 위한 레퍼런스를 제공하고 있는데, 이것의 형태도 크게 다르지 않습니다.
레퍼런스란 필요한 부분을 검색하여 원하는 정보를 찾아보는 대상을 의미 합니다. 레퍼런스는 그 자체로 이미 사전과 같은 역할을 하는 것인데 개발자 출신이 아닌 플래시 액션스크립터 지망생들은 이 레퍼런스를 어려워 하여 멀리하고 오히려 포털 검색으로 지식을 얻으려고 하는 경향이 있습니다.
차라리 검색을 구글에서라도 하면 상위에 리스트업 되는 Adobe 의 레퍼런스를 보게 될 텐데, 그것도 아니고 국내 포털 검색으로 주로 지식검색이나 카페에서 자신과 딱 맞는 케이스의 질문과 답변을 얻으려고 하니 참으로 딱한 상황이 아닐 수 없습니다. 이러한 경향은 지식검색이 만능이라고 생각하는 우리나라에서 좀더 두드러지는 경향이기도 하지만, 외국이라고 예외는 아니어서 RTFM 라는 재미있는 관용구도 있습니다.
어쨌건 이러한 형태의 레퍼런스에 친숙해 진다면 다른 언어로 개발하는 것도 꿈속의 일만은 아니게 되는것이죠. 우리에겐 레퍼런스가 있으니까요.
- ASDoc은 작은의미로 Flex SDK에 포함된 레퍼런스를 만드는 프로그램의 이름이기도 한데, 이 포스트에서는 그것보다는 큰 의미로 레퍼런스와 동일한 의미로 사용하였습니다. [↑]
속성까지 보내서 onEnterFrame 애니메이션
by 세계의끝 on 5.04, 2009, under AS2.0 API
AS2.0 환경에서 작업하는 사람들은 네비게이션을 수정해 본 정도의 스킬을 가지고 있는 디자이너인 경우가 대부분 입니다. 이 경우 구글 트위너나 TweenLite AS2.0 같이 외부 클래스를 사용하는 것은 그다지 고려의 대상이 아닌 경우가 많죠.
그래서 AS2.0 수준에서는 프레임 액션에 모든 코드를 넣고 플래시 애플리케이션을 만들게 됩니다. 애니메이션을 위한 코드 또한 예외 없이 다른 모든 코드들과 같이 프레임에 작성되어 구현하게 되죠. 아래와 같은 형태로 말입니다.
0 1 2 3 4 5 6 7 8 | //스테이지에는 각각 mc와 btn 무비클립이 놓여져 있음 function moving( $mc, $pos, $speed ) { $mc.onEnterFrame = function() { this._x += ( $pos - this._x ) * $speed; } } button.onRelease = function() { moving( mc, 300, 0.2 ); } |
나름대로 굉장히 간결한 형태입니다. 움직이는 요소들이 많지 않거나, 제한된 범위 내에서 사용하기에는 무리가 없어보입니다.
그런데 _x 좌표말고 _y 좌표라던가, 아니면 _alpha 라던가, _xscale, _height 같이 다른 속성의 애니메이션이 되어야 한다면, 해당하는 속성별로 함수를 종류별로 만들어야 됩니다.
이런경우 변화되어야하는 속성까지 같이 인자로 넘겨버린다면 이야기가 달라지겠죠. 변경하고 싶은 속성은 문자열 형태의 인자로 보내고 함수내부에서는 [] 연산자로 처리해버리면 됩니다.
0 1 2 3 4 5 6 7 8 9 10 11 | function moving( $mc, $var, $pos, $speed ) { $mc.onEnterFrame = function() { this[$var] += ( $pos - this[$var] ) * $speed; if ( $pos == Math.round( this[$var] ) ) { this[$var] = $pos; delete this.onEnterFrame; } } } button.onRelease = function() { moving( mc, "_x", 300, 0.2 ); } |
위의 코드를 보면 마지막으로 남아있던 무비클립 속성인 this._x 부분이 this[$var] 로 변경되어 모든 속성과 수치들이 함수의 인자로 빠져나왔습니다. (보너스로, 목표하는 지점에 속성이 거의 근접해서 소숫점 이하 반올림한 좌표와 같은 경우 무비클립을 목표 위치로 옮기고 엔터프레임을 죽여서 퍼포먼스를 확보하는 if 문을 추가하였습니다.)
속성을 선택하면서 해당속성을 변경하는 이런 방식은 AS3.0에서는 어찌보면 당연한 것인데 AS2.0 에서는 속성에 언더바( _x, _alpha … )가 붙어서 뭔가 접근할 수 없는것처럼 느껴져 위와 같은 생각을 쉽게 하지 못하는 경향이 있는것 같습니다.
액션스크립트에서는 this["문자열"] 형태의 참조가 가능합니다. ( _root["문자열"], _parent["문자열"], myMc["문자열"] 모두 가능 )
뒤에 계속 참조하려면 this["문자열"].myMc.yourMc._x 와 같이 점찍고 이어가기도 가능합니다.
문자열 부분에는 위와 같이 속성이나 변수도 올수도 있고, 내부에 있는 다른 무비클립도 가능하고, 함수도 가능하고, 뭐, 안되는게 없습니다.
다른 언어 하시는 분들은 이런 형태의 참조를 보고서는 “와, 이런게 가능하네. 무진장 편하겠네요” 하더군요.
양날의 검이긴 하지만 말이죠.
코드만 있고 그림이 없으면 뭔가 섭섭하기 때문에 간단하게 아래와 같이 만들어보았습니다.
Blog under the Creative Commons Attribution-NoDerivs 3.0 License