package ad.text.banner
{
     public interface IBanner
     {
          function reset():void;
          function start():void;
          function pause():void;
          function create(initializeData:XML):void;
     }
}

인터페이스 작성할때

Flex 2에서는 그냥 대충 적어줘도 알아서 적용되서 Code Hint 에 나타났지만

Flex 3 에서는 각 메소드 뒤에 ; (세미콜론) 을 찍어주셔야 Code Hint 에 나타납니다 -_-a

주의하시길;;
요즘 피부에 닿는 플래시쪽의 분위기는

말그대로 바다위의 폭풍전야다.

바다위의 폭풍전야는 겉보기에는 조용~하다.

하지만 이미 바닷속과 저 구름위쪽은

엄청난 소용돌이와 초속 수백미터를 넘나드는 속도로 요동을 치고 있다.

마치 플래시 시장이 그런것 같다.

아직 대중적으로 겉보기에는 3.0에 대한 이슈도 별로 없고

에어도 아직 개발단계니 별로 상용화된것도 없는거 같고

여기저기서 3.0이다 에어다 하지만

사실 현장에서 3.0이나 에어를 체감하는건 드문일일것이기 때문이다.

하지만 안보이는 곳에서 어떤 일이 일어나고 있는지 구경해보자.

이미 제 1, 2 금융권에서 적용되는 플래시는 이미 2.0을 버린지 오래됐고

3.0의 아키텍쳐를 높이 쳐주는 클라이언트들은

이미 자바에서 사용되는 수많은 개발방법론을 도입하여 개발하기를 원하고 있고

심지어 자바와 같은 레벨로 그 작업의 난이도와 가능성을 평가하고 있다.

그리고 이미 포화상태인 쇼핑몰과 브로드 캐스팅, 대량의 데이터를 서비스하는 주식이나 방송쪽에서는

이미 AIR 를 이용한 로컬베이스드 어플리케이션에 대한 요구가 들어오고 있다고 한다.

이는 이제 IT 시장의 선두주자들이 3.0과 AIR 에 대한 관심이 높아지고 있기 때문에

우리 눈앞에 3.0이나 AIR 가 펼쳐졌을때는 이미

수많은 개발자들과 클라이언트들이 이미 더 많은 어플리케이션을 개발하고 있을것이기 때문에

미래를 준비해야되는 입장에서는

지금 이시기를 헛되이 놓쳐서는 안될것이다.

사실 ActionScript 3.0 이 첫선을 보인지는 1년이 넘었다.

거의 1년 6개월 남짓 되어 가는거 같다.

이런 트렌드가 바닷속의 풍경이라면

구름 위의 풍경은 어떨까?

AS3.0이 발표되고 나서 가장 먼저 놀란 사람은

플래시 개발자가 아닌 자바 개발자들이 아니었을까 싶다.

왜냐면 자바의 모습을 쏙 빼닮았고

구조와 알고리즘이 꽤나 눈에 익었기 때문이었을 것이다.

사실 플래시시장은 IT 전반적으로 봤을때

먹고는 싶지만 왠지 먹을려면 불편한 그런 "음식"이었다.

화려한 UI와 간단한 메소드들, 브라우져 상관없이 어디서나 재생된다는 "맛있는 양념" 때문에

자바개발자나 웹개발자들에게 매우 흥미로운 음식으로 보였을 것이다.

그런데 실상 먹으려고 수저를 드니

언어라고는 하지만 언어도 아닌것이

디자인툴같지만 디자인툴은 또 아닌것이

영 "먹기"가 수월치 않았던 것이다.

그래서 디자이너들은 ActionScript 라는것을 익히느라 삽질 좀 했었을 것이고

개발자들은 타임라인과 모션을 익히느라 머리 꽤나 쥐어 뜯었을 것이다.

이런 상황에서

제대로된 E4X라는 언어의 모습으로 "먹기도 편한"것으로 나타나주었으니

그동안 호시탐탐 노리던 다른 언어 진영에서

수많은 미식가들이 넘어오기 시작한것이다.

그동안 2.0 때는 눈을 씻고 찾아보려고 해도 찾기 힘들었떤 (그렇다고 전혀 없지도 않았던)

디자인 패턴, 리팩터링, UML이니 OOP 이니 하는것들이

우리는 이제 익히기에 급급한 상황에서

자바진영에서의 넘어온 개발자들은

수준급으로 처음부터 화려하게 적용하는 모습을 보면서

나는 이런 생각을 했다.

"아 이제 스킬은 더이상 승부수가 아니다. 아이디어가 관건이다."

사실 이제 기술적인 한계는 당분간 걱정하지 않아도 될만큼 해소된건 사실이다.

그렇다면 이제 What I can do(할 수 있는 것) 가 아니라 What I can think(생각할 수 있는 것) 가 관건인 시대가 도래한것이라고 판단할 수 있다.

격변하는 요구사항을 소화하기 위한 SOAP

구조적인 탄탄함과 효율적인 아키텍쳐를 위한 OOP

하나의 문제에 다양한 접근방법을 제시해주어 사고의 틀에 박히는것을 해소해주는 Design-Pattern

개발자의 영원한 갈등인 디버깅과 재건축을 용이하게 이끌어주는 Re-factoring

머릿속의 복잡한 생각을 쉽게 표현하게 해주는 UML

그리고 올바른 개발의 방향을 제시해주는 여러가지 개발방법론들...

이제 기술은 더이상 우리에게 걸림돌이 아니다.

다 빠른 기간에 익힐순 없겠지만

손만 뻗으면 닿을 수 있는곳에 와있기 때문에

이제 우리가 어떤것을 더 이쁘고 편리하고 아무도 상상못했던것을 만드느냐가

개발자 자신의 몸값을 높이고

진정한 개발자로써의 목표가 된것이다.

How do you think?

이제 슬슬 3.0이 자리를 잡아가는거 같은 느낌이 듭니다.

그래서 3.0을 처음 공부하시는 분들이 아닌

2.0을 하시다가 3.0을 공부하시는 분들께

특히 다른 언어를 경험해보지 않으셨던 분들

즉, 2.0에 푹 길들여져있던 분들께 도움을 되지 않을까 싶네요.



 - 2.0때 되던 기능이 3.0에는 없어서 불편하다.

가장 많이 물어보는 질문이 onReleaseOutside 랑 duplicateMovieClip 을 가장 많이 물어봅니다.

물론 굉장히 편리한 메소드이기는 하죠.

하지만 3.0을 공부하면서 가장 밑바닥 개념으로 깔아놔야될 점이 바로

"제대로 된 언어" 이라는겁니다.

즉, 안되는건 없습니다.

다만 여러가지 기능을 하나로 묶어서 2.0때 하나의 메소드로 제공했거나

플래시가 스스로 처리했던 부분을 우리가 컨트롤 할 수 있도록 되었다는 것입니다.

3.0에서 안될리가 없습니다.

분명히 장담하지만 2.0때 되던게 3.0에서 못하는건 없습니다. (심지어 duplicate 도 만든다면 만들 수 있습니다.)

onReleaseOutside 는 아래와 같은 구조로 되어 있습니다.

1. 마우스를 누를때 mouseOut 이벤트를 걸어놓습니다.

2. 마우스를 누른 상태에서 마우스가 빠져나가면 mouseOut 이벤트를 캐치해서 이번엔 mouseUp 이벤트를 걸어놓습니다.

3. 이때 mouseUp 이벤트가 발생하면 이것이 바로 onReleaseOutside 입니다.

위 구조를 알고 있다면 3.0에서 똑같이 구현할 수 있습니다.



 - 클릭하나 체크하는데 너무 불편해요~

글쵸 기존에는 onMouseDown = function(){} 으로 바로 선언했지만

3.0에서는 이벤트 걸어주고 이벤트 받는 메소드 만들고

메소드도 타입 정해주고 메소드도 나눠지다보니까 값을 참조하려면 난감해지고

이상하게 자꾸 소스가 지저분해지는것 같죠.

자 여러분, 기존에는 자전거 부품가게에서 브레이크나 핸들, 뾱뽁이을 사다가

자전거를 만들었었습니다. 이때가 2.0 이었죠.

이제는 프레임을 만드는데 쓰이는 철, 알루미늄, 스뎅을 구할 수 있게되었고

핸들을 만드는데 쓰이는 고무, 와이어, 실리콘등을 구할 수 있게 된것이 바로 3.0 입니다.

즉 더 low 한 기능을 우리가 직접 컨트롤 할 수 있게 된것이죠.

가장 대표적인 부분이 Event 와 DisplayObjectContainer 그리고 Document Class 입니다.

3.0때 새로 나왔다고 생각하시는 분이 많은데

새로워지긴 했지만 2.0때 플래시가 자동으로 처리해주던 부분이

더 이쁘게 다듬어져서 나온것입니다.

onMouseDown 은 해당 무비클립에 이미 addEventListener 를 걸어놓고

리스너에서는 onMouseDown 이라는 함수를 실행하도록 미리 선언을 해놓았던 겁니다.

그렇기 때문에 우리는 onMouseDown 을 만들어주기만 하면 되었던 겁니다.

또 우리는 바닥에 무비클립을 만들어서 걍 돌리기만 하면 됐는데

3.0에서는 Document Class 선언해줘야되고

무비클립 하나하나 public 으로 선언해줘야되고

아 짜증나죠?

근데 2.0때는 플래시가 스스로 이미 그런 처리를 하고 있었던겁니다.

이제 그걸 우리가 할 수 있도록 제공되는것이죠.

그만큼 우리는 더 디테일하게 컨트롤 할 수 있고

더더욱 좋은 퍼포먼스, 더 최적화된 플래시를 만들 수 있게 된것이죠.



 - 일일이 addChild 하기 귀찮고 root 도 될때 안될때 있고 귀찮아요~

위에서 말했다시피 mc.createEmptyMovieClip() 은

var newMC: MovieClip = new MovieClip();
mc.addChild( newMC )

라는 메소드를 하나로 묶어놓은것 뿐입니다.

이 덕분에 우리는 그토록 갈망하던 이 인스턴스에서 저 인스턴스로 무비클립을 이동시킬 수 있게 되었죠.

그런데 이 기능은 안되는것이 오히려 이상했던겁니다.

OOP 입장에서 가장 기본이 되는 클래스가 인스턴스화되는 순간 특정 부모의 자식으로 고정되어버린다는것은

엄청난 제약을 받는것이라고 볼 수 있습니다.



 - 절대 2.0에서 쓰던 방식으로 3.0을 구현하려고 하지 마십시요.

onMouseDown 이 편했던건 사실입니다.

하지만 편했던 만큼 디테일하게 다룰 수 없었고

변수 스코프문제나 변수 전달등의 문제가 있었습니다.

그렇다고해서 3.0에서 public var onMouseDown: Function 으로 선언해놓고

mc.onMouseDown = function(){} 이렇게 하지 마십시요.

의외로 2.0때 쓰이던 방식을 3.0때도 그렇게 구현해서 쓰려고 애쓰는 사람 많습니다.

절대로 그렇게 하지 마십시요.

바로 이점 때문에 2.0을 하던사람이 오히려 새로 배우는 신입보다 3.0을 익히는 속도가 느린 이유입니다.

2.0 때의 습관이 몸에 베서 어떤게 더 효율적이고 어떤게 더 OOP 적인지 모르는 현상입니다.

특히 다른 언어를 모르는 상태에서 2.0만을 접한 사람들의 특징입니다.

클래스나 변수, 리턴타입, static, 상속에 대해서 잘 받아들이지 못하고

이해하는데 굉장히 힘들어합니다.

속마음은 이럴껍니다. "뭐하러 저렇게 복잡하게하지? 그냥 parent 로 가져다 쓰면 되는데..."

반박할 논점은 많지만

가만히 생각해보면 자바나 C 같은 언어진영에서 50년이 넘게

쓰이던 방식인데 설마 그걸 몰라서 안 그랬을까요?

아직은 모르겠지만 다 그만한 이유가 있기 때문이고 그럴 필요가 있기 때문에 그럴꺼라는

믿음을 가져보십시요.



이제 플래시가 UCC 를 필두로해서

어플리케이션으로써의 면모를 대중에게 선보이기 시작했습니다.

이는 곧 우리의 고객들이 비슷한 수준을 원하게 될거라는 의미며

고객이 원한다는것은 이제 우리가 그런것을 할 줄 알아야 한다는 의미입니다.

이웃팀 팀장님께서 알려주신것 처럼 "붉은 여왕 효과" 라는 말이 있습니다.

제자리에 있으려면 힘껏 달려야합니다.

왜냐면 모두가 달리고 있기 때문이죠.

솔직히 말해서 3.0의 등장은 기존의 2.0 개발자들에게

굉장히 불리한 언어입니다.

왜냐면 2.0 은 말이 스크립트지 언어도 아니며 스크립트도 아니며

좀 이상한 명령어들의 집합이었다고들 합니다.

누가 그러냐구요? 자바나 C 처럼 오랜 역사를 가지고 있는 언어쪽의 개발자들의 말입니다.

사실입니다.

그래서 3.0 이 제대로된 언어의 모습으로 세상에 나왔을때

우리가 우와 이게 뭐야? 하면서 멀뚱 멀뚱할때

이미 자바나 C 진영에서 새로운 아이디어를 갈구하던 많은 개발자들은

나오자마 엄청난 라이브러리들을 만들기 시작했습니다.

그게 벌써 1년이 지났네요.

요즘 AIR를 타겟으로 수많은 개발 방법론, 아키텍쳐, 개발 지원 툴들이

어마어마하게 쏟아져 나오고 있습니다.

얼마나 어마어마하냐면

이렇게 설명하면 이해가 되겠네요.

자바나 C 에서 50년도 넘게 걸쳐서 확립되고 논의를 거쳐 정리된 이론들이

플래시쪽으로 다이렉트로 적용되고 있습니다.

안타깝게도 우리는 따로 공부할 시간이 없습니다.

이미 남들은 그런 경험을 바탕으로 엄청난 소프트웨어를 만들고 있을때

우리는 현장에서 허겁지겁 익혀야합니다.

왜냐구요? 남들보다 잘할려고 하기보다 "제자리"에 있기 위해서죠.

늦지 않았습니다.

나이 먹어서 장사나 하려고 프로그램 하는 사람들은

어차피 그러다가 다른 쪽에서 돈 더 준다고하면 가차없이 플래시를 버릴 사람들입니다.

뼛속까지 개발하고 싶어하는

내가 만든 코드가 돌아갈때 희열을 느끼는 골수 플래시 개발자들에게는

이제 업그레이드할 시기가 왔습니다.

오히려 이제 진정한 "개발자"로써 탈피할때이죠.

2.0의 습관이나 메소드는 과감히 버리십시요. (회사에서 짤리지 않을 만큼만 ㅋㅋ)

이제 플래시로도 Language 입니다.

다들 홧팅~

p.s) 시간나면 야꼬한테 후원해주세요^^ 가상의 후원금입니다. ㅎㅎ


+ Recent posts