scaleform.minarto.com

Binding reboot - 2 본문

Communication

Binding reboot - 2

미나토 2013. 6. 13. 18:57


2013/06/11 - [Communication] - Binding reboot - 0


2013/06/13 - [Communication] - Binding reboot - 1





0. public static function del($key:String, $handler:Function):void



public static function del($key:String, $handler:Function):void {

	var a:Array, i:*;
			
	if($key){
		a = bindingDic[$key];
		for (i in a) {
			if (a[i].handler == $handler){
				a.splice(i, 1);
				if(!a.length)	delete	bindingDic[$key];
				return;
			}
		}
	}
	else	bindingDic = {};
}



바인딩을 해제하는 함수입니다.


$key 값을 넣지 않으면 모든 바인딩을 해제합니다.


현재 떠 있는 모든 위젯이 삭제되는 상황에서 사용하면 되겠죠. 로그인만 떠있던 화면에서 서버리스트 선택으로 넘어간다던지, 캐릭터 선택에서 인게임으로 넘어간다던지 할 때 말이죠...


딱히 어려울 만한 부분은 안보이는 군요. 넘어가겠습니다




1. public static function get($key:String):*


public static function get($key:String):* {
	return	valueDic[$key];
}


해당 키의 값을 가져오는 함수입니다.


이 또한 딱히 살펴볼 만한 부분은 없고요...




2. Binding 장점



다시 한번 Binding 의 장점에 대해서 알아보겠습니다.




1. 클라이언트와 UI 개발자 간에 인보크 함수를 정의할 필요가 없다


모든 값 입력은 set 하나로만 사용하니 당연히 다른 인보크 함수를 정의할 필요없습니다.




2. 클라이언트와 UI 개발자 간의 연동 테스트가 필요없다


set 하나만 사용하니 정상동작하는 것을 한번만 확인했다면 두번다시 테스트가 필요없다.


무언가 잘못된다면 코드의 문제는 아닙니다. key 값이 잘못 되었거나 입력값이 잘못된 것이죠.




3. UI 개발자가 직접 인게임 상황에서 테스트 용도로도 활용할 수 있다.


이는 이미 기존 포스팅에서 설명했지요. UI 개발자가 클라이언트의 테스트 역할을 대신 할 수 있는 겁니다




4. 엔진과 스케일폼 간의 통신이 극도로 적어진다


내부에 캐쉬값을 가지고선 모든 UI는 그 캐쉬 값을 사용합니다. UI마다 각각 클라이언트로부터 값을 받을 필요가 없으니 당연히 통신 횟수가 적어집니다




5. UI의 초기화 과정이 필요없다


4번에서 말한 대로 캐쉬값을 가지고 있기에, UI 가 로드되고 초기화 될 때까지 기다렸다가 인보크 함수를 실행할 필요가 없습니다

더 이상 위젯의 enableInitCallback 속성은 의미가 없는 겁니다




6. null 오류가 발생하지 않는다.


5번에서 말한 대로 초기화가 필요하지 않기에 그에 따른 null 객체를 건드리지 않으므로 null 오류가 발생하지 않습니다




7. 애드온 UI 개발이 쉬워진다


단일 api를 가지고 UI에 값을 전달하기 때문에 애드온 개발이 쉬워지겠죠

다른 api를 열어줄 필요가 없는 겁니다




8. 적용하기 위해서 기존 코드를 건드릴 필요가 없다


이것은 그냥 as 라이브러리이기 때문에, 기존 코드와 병행해서 사용할 수 있습니다

클라이언트 코드도 전혀 건드릴 필요도 없고, UI 코드도 건드릴 필요도 없습니다.


새로운 인보크 함수나 기존 방식에서 바꾸고 싶은 부분에만 적용하면 됩니다


클라이언트도 Binding.set 을 몰라도 root.setValue 를 사용하면 되기 때문에 기존과 달라질 것이 없습니다




9. 이벤트 기반이 아니다


이벤트 기반이 아닌 콜백 방식이기 때문에 속도도 빠르고, gc 관리도 편합니다




10. 메모리 관리가 편하다


초기화가 필요 없기에, 위젯을 마음대로 로드했다 언로드 할 수 있습니다.

필요할 때만 로드해서 사용할 수 있기에 메모리가 관리가 편하고 적게 듭니다




3. Binding 단점



누누히 말했지만 포스팅용 코드라 테스트를 장시간 하지 않은 것을 빼면... 솔직히 전 단점을 모르겠네요...



새로운 코드에 대한 교육이란 무형의 비용도 들지 않는 것이... 사용하는 함수라고는 set, get, add, del 뿐입니다.


이 중에서 클라이언트는 set 만 알아도 됩니다.


static 함수만을 사용하기 때문에 객체 관리 또한 전혀 필요 없고요...



혹시 생각나는 단점이 있다면 알려주시기 바랍니다.




그럼 Binding 포스팅은 이만하도록 하죠...




Binding 쓰세요... 두번 쓰세요... 마구마구 쓰세요...