180bpm
Scaleform에서 Loader로 불러온 swf의 Class를 사용하는 법 본문
반응형
private function init(e:Event = null):void {
removeEventListener(Event.ADDED_TO_STAGE, init);
var fontLoader:Loader = new Loader();
var fontReq:URLRequest = new URLRequest("fontlib.swf");
fontLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadFont);
fontLoader.load(fontReq);
}
private function onLoadFont($e:Event):void {
var fontClass:Class = $e.target.applicationDomain.getDefinition("$normalFont") as Class;
Font.registerFont(fontClass);
_font = new fontClass();
$e.target.removeEventListener(Event.COMPLETE, onLoadFont);
}
applicationDomain을 지원 하지 않는다. (서포트 문서 참고. 4.0 대에서 지원 예정으로 나옴)
private function init(e:Event = null):void {
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point
var fontLoader:Loader = new Loader();
//http://umroom.com/blog/archive/2009/01/162248.html
var loaderContext:LoaderContext = new LoaderContext ();
loaderContext.applicationDomain = ApplicationDomain.currentDomain;
var fontReq:URLRequest = new URLRequest("fontlib.swf");
fontLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadFont);
fontLoader.load(fontReq,loaderContext);
}
private function onLoadFont($e:Event):void {
var fontClass:Class = getDefinitionByName("$NormalFont") as Class;
를 쓰면 된다.
LoaderContext의 applicationDomain을 지정해주는건 플래시 플레이어 때문에. getDefinitionByName을 쓰는건 스케일폼때문에.
근데 이상한게 서포트 문서에선 applicationDomain이 지원이 안된다고 나와있는데 Warning - 지원하지 않는 함수입니다 라는 메시지가 뜨지 않는다.
근데 이상한게 서포트 문서에선 applicationDomain이 지원이 안된다고 나와있는데 Warning - 지원하지 않는 함수입니다 라는 메시지가 뜨지 않는다.
반응형
Comments