scaleform.minarto.com

Actionscript 만으로 DataBinding 을 구현해보자 0 본문

Communication

Actionscript 만으로 DataBinding 을 구현해보자 0

미나토 2012. 8. 3. 17:14


UI 만들기만 늘 포스팅하면 제가 사실 심심합니다...


가끔 사이드 디쉬도 먹어보죠!!!~~~




0. DataBinding 무조건 좋을까?



DataBinding 은 스케일폼을 작업하는 플래시 개발자 입장에서는 굉장히 편리한 클래스입니다.

(참고로 DataBinding 에 관한 글은 이 글 http://scaleform.minarto.com/332 을 참고하시기 바랍니다)



사용의 편의만이 아닙니다...


클라나 UI개발자나 하나의 API만을 이용해서 통신을 하니, 그만큼 디버깅이 줄어들게 됩니다.





하지만 여기에도 문제가 없는 것은 아니죠...



1. 클라와 스케일폼 간에 통신이 빈번하게 발생한다. (정확히는 그럴 여지가 있다)


2. 클라쪽의 코드를 구현해야만 동작한다.



이러한 문제들을 고려해봐야 합니다.






1. 클라와 스케일폼 간에 통신이 빈번하게 발생한다



이 데이터 바인딩이란 것이 결국 UI쪽의 핸들러 포인터를 클라쪽에 등록하고선 해당값을 인자로 실행하는 형태가 되다보니(제가 볼때는 그런데, 아닌가요?), 연결되어진 모든 핸들러를 콜하게 됩니다.

클라이언트랑 스케일폼의 VM은 이종의 언어이고, 이종의 언어끼리의 통신이 잦아진다는 것은 속도적인 면으로 볼 때 그리 유리한 것은 아닙니다.

(단, 제가 소개할 방식이 꼭 빠르다는 얘기는 아닙니다. 그냥 데이터 바인딩의 상황을 이야기 한 것입니다.)





2. 클라쪽의 코드가 구현되어 있어야만 동작한다.



클라쪽 코드가 구현되어 있지 않으면, 그냥 빈 껍데기일 뿐인 코드가 바로 DataBinding 입니다.



뭐, 클라이언트 개발자가 "하기 싫어!!!" 라고 앙탈을 부리며 안하는 일이야 없으리라 보지만, 그런 이유 이외에도 사용하지 못할 이유가 또 있을 수도 있는거죠...



하지만 어떤 상황이 되더라도 저희는 일을 해야죠... 직접 한번 구현을 해보겠습니다. actionscript 만으로 말이죠...





3. DataBinding 은 어떠한 원리로 돌아갈까?



몇번 말했듯 전 플래시 개발자 출신이고 다른 언어는 전혀 모릅니다.


게다가 이 포스팅의 목적이 actionscript 만으로 구현하는 것이니 이 원리라는 것은 as 로 구현하고자 했을 때의 원리를 생각해야 합니다.



참고로 as2용 코드는 http://scaleform.minarto.com/342 이 포스팅을 보면 watch 를 이용하여 비슷하게 보여드린 적이 있습니다.

DataBinding 과는 좀 다른 방식이긴 하지만요...



DataBinding 의 사용예제를 볼까요...


DataBinding.createBinding("player.level", handler);


이렇습니다.

DataBinding 은 결국 특정한 속성 값이 변경되어질 때마다 연결해놓은 핸들러들이 실행되는 형태를 가집니다.


그렇다면 해당 속성이 포함되어진 녀석은 하나의 해시맵이고, 각 속성을 키값으로 찾아볼 수 있게 만들면 되는 겁니다.


player = {};
player.level = 1;


뭐 이런 식으로 만들면 일단 데이터컨테이너로서의 역할은 충분히 한다는 거죠.



그럼 여기까지를 기초로 해서 만들어보기 시작하면 됩니다





다음 포스팅으로 이어집니다~


http://scaleform.minarto.com/370