ver1에서는 단독형으로 진행이 되었던 것이고, 요번 버전은 고아로 생성하여 동시에 여러개를 호출 할 수 있는 코딩 기법을 사용하였다. 닷넷 랭귀지와 사용한 코드로 progress에 대한 것은 처리가 안되어있고, 로딩된 데이터만 처리가 가능하도록 실행할 메서드를 null로서 예외 처리를 하였다.
AS3 code
1 2 3 4 5 6 7 8 | import com.dao.GetXML; private function init():void { GetXML.getXML(xmlPath, inputReferMethod, enterMethod); // or GetXML.getXML(xmlPath, inputReferMethod); } private function inputReferMethod(xml:XML = null):void {} private function enterMethod():void {} |
AS3 code
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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | /** * @author jin_u, jinuiny@ghost-corps.com, www.jinustudio.com/blog * @since 2009.6.28 * @version 0.0.2 */ package com.dao { /** * 플래시 기본 API 클래스 */ import flash.display.Sprite; import flash.events.Event; import flash.net.URLLoader; import flash.net.URLRequest; import flash.events.IOErrorEvent; /** * XML 데이터 정보를 관리한다. */ final public class GetXML { /** Private Properties */ private var inputReferMethod:Function; private var enterMethod:Function; public function GetXML(xmlPath:String = "", setXMLFunc:Function = null, enterFunc:Function = null) { trace("## XML :: getXML() = ", xmlPath); if (xmlPath == null) return; /** XML 데이터 값을 리턴 받을 참조 메서드 */ this.inputReferMethod = setXMLFunc; /** XML 데이터 완료시 실행할 참조 메서드 */ this.enterMethod = enterFunc; var ul:URLLoader = new URLLoader(); ul.addEventListener(Event.COMPLETE, onCompleteXML); ul.addEventListener(IOErrorEvent.IO_ERROR, onErrorXML); ul.load(new URLRequest(xmlPath)); } /** * XML 데이터를 로드하는 메서드 * @param xmlpath : 호출할 경로. * @param setXMLFunc : 로드가 완료 될 시에 XML 데이터를 파라메터로 받기 위한 메서드. * @param enterFunc : 로드가 완료 될 시에 실행할 메서드로서 enterMethod에 참조하여 실행되게 처리 됨. */ public static function getXML(xmlPath:String = "", setXMLFunc:Function = null, enterFunc:Function = null):GetXML { return new GetXML(xmlPath, setXMLFunc, enterFunc); } /** * XML 이벤트 핸들러 정의 */ /** COMPLETE */ private function onCompleteXML(e:Event = null):void { trace("## XML :: onCompleteXML()") var xml:XML = XML(e.target.data); trace("## XML :: onComplete =", xml); /** 이벤트를 제거 한다 */ e.currentTarget.removeEventListener(Event.COMPLETE, this.onCompleteXML); e.currentTarget.removeEventListener(IOErrorEvent.IO_ERROR, this.onErrorXML); /** XML 데이터를 호출 할때 코어쪽에 데이터를 입력하기 위한 설정 메서드에 값을 인자로 넘긴다. */ this.inputReferMethod(xml); /** XML 로드가 완료가 되면 실행 등록한 메서드를 실행한다. */ if (this.enterMethod != null) { this.enterMethod(); } } /** IO_ERROR */ private function onErrorXML(e:IOErrorEvent = null):void { trace("## XML :: onError"); } } } |













