본문 바로가기

Actionscript3.0

[AS3] TLF( Text Layout Framework ) 사용시 FlashVars 접근 문제

Adobe 에서는 Flash Player 10 부터 TLF( Text Layout Framework ) 를 제공하고 있다. 기존 TextField 를 사용하는 방식은 사용 방법이 편하긴했지만, 텍스트를 다루는데 기능적으로나 퍼포먼스 측면에서 부족한게 많았다.

TLF 에서는 이러한 단점들을 Text 를 다루는 Flash Player 의 low level 에 접근하는 프레임워크를 제공하므로 부분적으로 해결되고 있는 움직 임이다. 더 자세한 내용은 Adobe Labs - TLF 에서 확인 가능 하다.

사용 방법은 Adobe Labs 에 자세히 나와 있고, 한가지 주의할 점은 Flash CS5 에서 작업할때 Actionscript 3.0 Settings 패널에서 Runtime Shared Library Settings 가 Runtime shared library(RSL) 로 되어 있는데 이 설정은 textLayout.swc를 외부에서 불러와서 사용하기 때문에 외부 서버 상태에 따라 로딩 지연이 있을수 있으니 swf의 용량이 증가되더라도 Merged into code 로 바꿔 주는게 좋다.




문제는 TLF 를 사용한 프로젝트에서 loaderInfo 에 있는 FlashVars 를 접근할때 parameters 에 있는 값들이 null 로 인식 되는 버그가 있다. Main.swf 에서 TLF 를 로드하는 과정에서 loaderInfo 가 달라져서 발생하는 문제 인데 다음과 같은 방법으로 해결 가능 하다.


if (stage) {
	init();	
} else {
	addEventListener(Event.ADDED_TO_STAGE, init);	
}		

function init( e:Event = null ):void {

        var flashVars:Object = {};
	removeEventListener(Event.ADDED_TO_STAGE, init);
			
	if (parent != null && parent.parent != null) {
		flashVars = parent.parent.loaderInfo.parameters;
	} else {
		flashVars = this.root.loaderInfo.parameters;
	}
}


TLF flashvars bug : http://forums.adobe.com/message/3259520?tstart=0