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