Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- KGC 2013
- Document Class
- CLIK
- MMOKit
- DataBinding
- as3
- 플래시
- 형변환
- 샌프란시스코
- Chart
- flash player 10
- 애드온
- 스케일폼
- flash cs3
- ApplicationDomain
- 집합의 연산
- as3.0
- watch
- autodesk
- scaleform4
- as2
- 수학정석
- GDC
- scaleform3
- 태그클라우드
- addChild
- 강좌
- flash
- 클릭
- scaleform
Archives
- Today
- Total
scaleform.minarto.com
MMOKit 0 - DataBinding 0 본문
사실 MMOKit 은 as2 버전으로도 있었습니다만... 그냥 껍데기에 가까운 샘플이었습니다.
as3 용으로 들어있는 MMOKit 데모야 말로 제대로 된 데모라고 볼 수 있습니다.
그런데 UDK 에는 이녀석이 들어있지 않습니다. 아마도 언리얼의 워크플로우에 맞는지 검증이 되지 않기 때문에 제외했다고 생각됩니다만... 뭐 에픽 맘이죠...
여러분은 다운받기 위해서는 스케일폼 홈페이지에 들어가서 트라이얼 버전을 받는 수밖에 없습니다.
암튼 어찌어찌하여 받아보셨다면, MMOKit 을 조금씩 분석해보도록 하겠습니다.
MMOKit 소스는 스케일폼을 따로 폴더를 지정하지 않고 설치하셨다면 다음과 같은 경로 안에 들어있습니다.
C:\Program Files (x86)\Scaleform\GFx SDK 4.0\Bin\Data\AS3\Kits\MMO
일단 그 안에 있는 MMOKit.exe 파일을 실행시켜 보세요... 그럼 MMOKit 이 실제 돌아가는 모습을 볼 수 있을 겁니다.
오늘 살펴볼 놈은 DataBinding 입니다. 사실 이놈은 MMOKit 에 들어있는 녀석은 아닙니다. CLIK 의 일부분이죠...
UDK 라면 다음 폴더 안에 들어있고,
C:\UDK\UDK-2012-02\Development\Flash\AS3\CLIK\scaleform\clik\data
scaleform 이라면 다음 폴더 안에 들어있습니다.
C:\Program Files (x86)\Scaleform\GFx SDK 4.0\Resources\AS3\CLIK\scaleform\clik\data
그런데 왜 CLIK 포스팅 때는 다루지 않다가 지금 다루느냐...
CLIK 은 콤포넌트들의 분석을 위주로 한거였고... 이번이 어쩌면 실전입니다.
콤포넌트 백날 분석해봤자 뭐하나요... 실제 데이터를 받아 돌아가야죠...
DataBinding 을 통해 클라이언트의 데이터와 바인딩 되면서 스케일폼의 플래시 파일들은 진짜 생명력을 얻는다고 보시면 됩니다.
com.scaleform.mmo.unitframes.PlayerUnitFrame.as
파일을 한번 보죠
public function PlayerUnitFrame() {
super();
configUI();
}
protected function configUI():void {
DataBinding.createBinding("player.name", setName, this);
DataBinding.createBinding("player.level", setLevel, this);
}
첫번째 인자인 key 값은 "player.name" 입니다. 이 키에 매핑된 값이 변하면 setName 함수가 이 값을 인자로 실행되는 것이죠.
세번째 인자인 this 는 함수의 scope 를 말하는 것으로 보이는데, 음... as3 에서는 scope 는 자동으로 들어가게 되는데 꼭 필요한 것인지 잘 모르겠네요...
암튼 저렇게 실행됩니다...만, "player.name" 는 어디서 튀어나온 것일까요...
자, 다음의 파일을 에디터에서 열어보세요...
C:\Program Files (x86)\Scaleform\GFx SDK 4.0\Apps\Kits\MMO\UI\GameUIDataBindings.cpp
네, c++ 파일입니다. 그렇다고 플래시 개발자들은 겁먹을 필요없습니다. 이걸 가지고 어떻게 하자는게 아니니까요. 저도 c++ 전혀 해본적 없습니다.
어쨌든 파일을 열어보면, 1129번째 행에 다음과 같은 함수가 정의되어 있습니다.
void GameUIAdapter::registerBoundDataWrappers()
{
// Install bindings
DataBindingAdapter->RegisterBoundData("player.name", *SF_NEW DW_PlayerInfo(Client, Game::INFO_Name));
1196 행에는 다음과 같은 함수가 있습니다
void GameUIAdapter::HandlePlayerInfoChange(Game::InfoType p)
{
switch (p)
{
case Game::INFO_ID: DataBindingAdapter->NotifyDataChange("player.id"); break;
case Game::INFO_Name: DataBindingAdapter->NotifyDataChange("player.name"); break; 자, " player.name" 이 보이십니까?
전 c++ 은 모르는 플래시 개발자이니 여기까지만 하겠습니다. 여기 부분은 클라이언트 개발자가 수정을 해서 쓰던가 하겠죠...
저희는 이 파일을 참조하시라고 힌트 정도를 주면 되겠죠? :^)
어쨌든, 이것은 key 이름만 보면 바로 알 수 있듯이 플레이어의 이름값에 매핑된 key이고... 이걸 DataBinding 을 통해서 플래시에서 바인딩 되게 하면 됩니다.
DataBinding.createBinding("player.name", setName, this);
요 한줄로 바로 클라와 통신이 된 것이죠... 너무 쉽지 않나요??
바인딩 해제는 똑같습니다.
DataBinding.deleteBinding ("player.name", setName, this);
해주시면 되요~~
이번에는 아주 간단한 기초로 보시면 됩니다...