scaleform.minarto.com

ListBinding 클래스 - 1 본문

Communication

ListBinding 클래스 - 1

미나토 2013. 1. 23. 17:43


2013/01/22 - [Communication] - ListBinding 클래스 - 0





1. 브릿지 객체



코드는 다음 경로에 있습니다


as2 : http://code.google.com/p/minarto-scaleform4/source/browse/trunk/as2/src/com/minarto/data/ListBridge.as

as3 : http://code.google.com/p/minarto-scaleform4/source/browse/trunk/as3/src/com/minarto/data/ListBridge.as



이번에 보여드릴 클래스는 브릿지 클래스입니다.


이전 글에서 소개한 브릿지 객체가 될 녀석이죠...



리스트 바인딩 객체가 실제 UI 와의 바인딩 처리를 한다면, 브릿지 객체는 클라이언트와의 통신을 담당합니다(데이터 가공을 포함)



코드는 사실 별개 없습니다. 그냥 추상클래스 정도로 생각하시면 됩니다. (actionscript2/3 가 추상클래스를 지원하지 않거든요)


실제 구현부는 상속받은 클래스에서 작성해야 한다고 보시면 됩니다.



하지만 api를 통해서 브릿지 객체의 역할을 짐작할 수 있습니다.




2. 클라이언트와의 통신



브릿지 객체의 첫번째 임무는 클라이언트와의 통신입니다.


그러다 보니 일단 객체포인터를 클라이언트에게 넘기면서 시작을 합니다.


클라이언트가 해야할 일은 당연히 리스트 형태의 데이터를 넘기는 일입니다.



방식은 Binding 의 그것과 비슷합니다.

약속한 키에 맞춰서 데이터를 넘기는 것이지요...



코드 상으로는 ListBinding.setList 를 호출하고 있긴 하지만, 아마도 그 코드 그대로 쓰일 일은 별로 없습니다.



그건 코드의 가장 마지막에 할 일입니다.

언급한 대로 데이터 가공을 한 다음에 마지막에 최종적으로 데이터를 넘겨줍니다.






3. 개요



리스트 바인딩의 핵심은 Binding 클래스와는 달리 클라이언트와 UI 를 바로연결해주는 것이 아닌, 데이터의 변환 과정을 한번 거치는 데에 있습니다.


그걸 통해서 각 회사 / 프로젝트 마다의 독특한 방식에 따라 알아서 가공해 주셔야겠죠...


예를 들자면 인벤토리의 물약을 퀵슬롯에 링크했다고 쳐보죠...


그런데 링크한 해당 슬롯의 물약 갯수를 그대로 보져주기보다는, 인벤토리에 존재하는 모든 같은 물약의 합을 보여줄 수도 있을 겁니다.


그걸 클라이언트가 일일히 다 전해줄 필요 없이 UI 개발자가 처리할 수도 있단 얘기죠...



물론 클라이언트가 다 알아서 해주면 이런 과정이 필요 없을 수도 있습니다.



하지만 애드온 UI의 경우라면 다릅니다...


UI 개발자가 어떠한 형태로 물약의 갯수를 보여줄지 말지는 다 알아서 해야 합니다. 클라이언트가 해줄 수 없는 노릇이지요...



그렇게 하기 위한 녀석이라고 보시면 됩니다.

그리고 실제 클라이언트와의 통신도 담당하고요...



그런 추상클래스이다 보니 구현부는 사실 별거는 없습니다.