Package: timo.net / SuperClass: EventDispatcher
package timo.net
{
import flash.events.Event;
import flash.events.EventDispatcher;
import flash.net.URLLoader;
import flash.net.URLRequest;
import timo.events.XMLLoaderEvent;
// XMLLoader는 XMLLoaderEvent와 연결되어 있다... 라는 것을... 정의해줘야.. 코드힌트에 나온다..
[ Event( name="complete", type="timo.events.XMLLoaderEvent")]
public class XMLLoader extends EventDispatcher
{
// has a 관계 { 위임관계 } URLLoader에게 기능을 위임한다.
private var urlLoader: URLLoader = new URLLoader();
//EventDispatcher를 상속받았기때문에 생기는 괄호안에 있는 초기 내용은 지워준다.
public function XMLLoader()
{
super();
}
public function load( url: String ): void
{
urlLoader.addEventListener( Event.COMPLETE, onComplete );
urlLoader.load( new URLRequest( url ) );
}
private function onComplete( e: Event ): void
{
//여기까지는 아직 유알엘 로더에서 이야기 한것임 다음단계로
//var evt:Event=new Event("qqq"); //이벤트는 편지와 같다
//this.dispatchEvent(evt);//이벤트를 발송한다
//var evt:ImageLoaderEvent=new ImageLoaderEvent(loader.content,ImageLoaderEvent.COMPLETE); //이벤트는 편지와 같다
//this.dispatchEvent(evt);//이벤트를 발송한다.
var xml: XML = new XML( this.urlLoader.data );
var evt: XMLLoaderEvent = new XMLLoaderEvent( xml, XMLLoaderEvent.COMPLETE );
this.dispatchEvent( evt );
}
}
}
Package: timo.events / SuperClass: Event
package timo.events
{
import flash.events.Event;
public class XMLLoaderEvent extends Event
{
// 이벤트 타입은 쉽게 읽어올수 있도록 상수로 저장해둔다...!!
public static const COMPLETE: String = "complete";
public var xml: XML;
public function XMLLoaderEvent( xml: XML, type:String, bubbles:Boolean=false, cancelable:Boolean=false)
{
super(type, bubbles, cancelable);
this.xml = xml; //위의 생성자(xml:XML)에서 저장한 데이터를 꺼내쓸 수 있도록 하는 것
}
}
}
SuperClass: Sprite
package
{
import flash.display.Sprite;
import timo.events.XMLLoaderEvent;
import timo.net.XMLLoader;
public class XMLLoaderTest2 extends Sprite
{
public function XMLLoaderTest2()
{
super();
// 1. 관리자
var xmlLoader: XMLLoader = new XMLLoader();
// 2. 데이터가 도착하면 할 일
xmlLoader.addEventListener( XMLLoaderEvent.COMPLETE, onComplete );
// 3. 호출
xmlLoader.load( "./sample1.xml" );
}
private function onComplete( e: XMLLoaderEvent ): void //XMLLoaderEven를 넘겼다.
{
trace( e.xml );
}
}
}
//이벤트는 정보와 같다..사건을 보도 받으면 사건발생장소 시간 등등 의 세부내용을 알려줘야 정확한전달이 가능
//e:Event 상태는 "정보 왔어요" 정도의 정보임 세탁다 되었어요 (손에는 세탁물없이 버튼만 )세탁물은 알아서 찾아가세요
//e.target 말하는이 e,currunttarget . 듣는이
//이벤트에는 타입 자리밖에 없다.....다른 요소 들이 들어갈 자리가 없다. 그러므로
// 엑스엠을 쓰려면 이벤트를 엑스엠엘이 들어갈 공간이 있느 ㄴ곳으로 이벤트를 보내면 된다.
//쓰고있는 클라스 전용 이벤트를 만들어준다
//A(나 ) B(중간자)는 C가 가진 데이터를 엑스엠엘로 바꾼다음에 엑스엠엘로더 이벤트로 바꾼 후에 야후라는문자열을 붙여서
//나에게 전달한다.
//클래스.변수/함 static함수 혹은 변수