1) src 폴더에 img폴더를 만들고 그 안에 "aaa.jpg"파일을 저장한다.
2) ImageLoader class 만들기(package: timo.display, name: ImageLoader, superClass:Sprite) 단, 상속클라스 이외의 모든 이름은 취향 것 지정한다. (로더가 이미지를 불러들이고 이미지로더는 메인 도큐먼트에게 데이터가 도착했음을 알려준다.)
3) ImageLoaderTest document 만들기 (name: ImageLoaderTest, superClass:Sprite)
(이미지로더로부터 받은 데이터를 직접 활용한다.)
원리는 다음과 같다.
ImageLoader 클래스는 무엇을 상속받을까?
load의 기능이 필요한 경우는 두가지 (소송시 변호사가 되거나 변호사를 고용한다 (전자는 상속 후자는 가지는 것 )
1.loader를 상속 받는다 .... is a 관계 (내가 ~이다 )
2.loader를 하나 가진다 .... has a 관계 (내가 ~을 가진다 )
*******상속은 하나 밖에 못받기 때문에 has a가 더 유연하다 필요에 따라 여러개 가져올 수 있으므로 **********
package timo.display
{
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.Event;
import flash.net.URLRequest;
public class ImageLoader extends Sprite
{
//has a 관계
private var loader:Loader= new Loader();
public function ImageLoader()
{
super();
this.addChild(loader);
}
public function load (url:String):void
{
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
loader.load(new URLRequest(url));
}
private function onComplete(e:Event):void
{
//여기까지 단계는 도착했음 이미지로더에게 알려주는 것 다시 클라이언트에게 알려줘야함
var evt:Event=new Event("aaa"); ///aaa는 이벤트 타입
this.dispatchEvent(evt); //도착했음을 알려줌
}
}
}
package
{
import flash.display.Sprite;
import flash.events.Event;
import timo.display.ImageLoader;
public class ImagLoaderTest extends Sprite
{
public function ImagLoaderTest()
{
super();
var imgLoader:ImageLoader=new ImageLoader();
imgLoader.addEventListener("aaa", onAAA); // 이미지로더 클라스에서 보낸 aaa 몌시지를 받음
imgLoader.load("./img/aaa.jpg");
this.addChild(imgLoader);
}
private function onAAA(e:Event):void
{
trace("이미지도착");
}
}
}
* 동기식 ( Synchronous ) VS 비동기식 ( Asynchronous )
*** 동기식 : ( 싱크로너스 --> 싱크로나이징 ) :: 호흡을 맞춘다..보조를 맞추는 것 ::: >>> 기다려준다..!!
{동기식 == 기다려주기 }
*** 비동기식 : 기다리지 않기.. { 완전히 기다리지 않는건 아니다..-.- }
컴퓨터는 동기식 or 비동기식
function AAA()
{
trace( "aaa" );
BBB();
trace( "bbb" );
}
function BBB()
{
trace( "kkk" );
}
AAA();
aaa = 20;
bbb = 80;
bbb = aaa + 20;
bbb = bbb + 40;
- 컴퓨터는 동기식이다...!!
앞에 있이 끝날때까지.. 기다린다...!!
AJAX : Asynchronous Javascript And XML
// **********************************************************
** 플래시도 기본적으로 동기식으로 동작한다...!!
--> 외부와의 연동은 비동기식으로 동작한다....!!!!!!!!!!!!!!!!!!!!
XML 가져오기, 이미지 가져오기
************************************************************//
@ 비동기식 코딩방법
// 1. 객체 생성
// 2. 데이터가 도착하면 할일
// 3. 데이터 호출
외부 텍스트 불러오기
var urlLoader: URLLoader = new URLLoader();
urlLoader.addEventListener( Event.COMPLETE, onComplete );
urlLoader.load( new URLRequest( "./data.xml" ) );
function onComplete( e: Event ): void
{
}
// 이미지 불러오기... Loader
var loader: Loader = new Loader();
loader.addEventListener( Event.COMPLETE, onComplete );
loader.load( new URLRequeset( "./aaa.jpg" ) );
*** Loader 클래스는 쓰기좀 힘들다...
var imgLoader: ImageLoader = new ImageLoader();
imgLoader.addEventListener( Event.COMPLETE, onComplete );
imgLoader.load( "./img/aaa.jpg" );
addChild( imgLoader );
ImageLoader 클래스는 무엇을 상속받을까?
Loader의 기능이 필요한 경우
1. Loader 상속을 받는다.. is a 관계
2. Loader를 하나 가진다.. has a ************
// Event에는 공간이 type 자리 밖에 없다...
var xmlLoader: XMLLoader = new XMLLoader();
xmlLoader.addEventListener( "", onComplete);
xmlLoader.load( "./aaa.xml" );
function onComplete( e: ): void
{
trace( e.xml );
}
var urlLoader: URLLoader = new URLLoader();
urlLoader.addEventListener( Event.COMPLETE, onComplete );
urlLoader.load( new URLRequest( ) );
function onComplete( e: Event ): void
{
urlLoader.data
}
class XMLLoader extends ???
{
private var urlLoader: URLLoader = new URLLoader();
override public function load( url: String ) : void
{
}
}
var aaa: AAA = new AAA();
aaa.addEventListener( AAAEvent.aaa, onComplete );
var imgLoader: ImageLoader = new ImageLoader();
imgLoader.addEventListener( ImageLoaderEvent.COMPLETE, onComplete );
imgLoader.load( "./aaa.jpg" );
function onComplete( e: ImageLoaderEvent ): void
{
// 완료...
}
====================
URLLoader:XML;
클래스 설계(제작): 쓰기 편하게 만드는 대표적인 예
*동기식 비동기식
동기식 (싱크로너스-->싱크로나이징)
싱크로나이징이란 보조를 맞추는 것 즉 호흡을 맞추는 것 :: 호흡을 잘 맞추려면 잘하는 사람이 기다려주는 것이 가장 중요하다.
동기식=기다려준다. (택시 편의점 거스름돈 금방끝날 것을 알고 다른 일 안하고 기다려준다 )
비동기식 :기다리지않기 (완전히 기다리지않는 것은 아니다.) 시켜놓고 내할일을 하다가 다 되면 바라본다.
(예..세탁소..세탁물을 맡기고 자기 할일을 하다가 세탁이 모두 되면 찾으러 간다 )
컴퓨터는 동기식일까 비동기실까?
동기식 이다 매우 빨리 돌아가기 때문에...
밑에 액션이 있더라도 이전것이 수행완료될때까지 기다린다.
웹은!!!!!
jsp 일때는 동기식
아이작스: 비동기식 (자바스크립스를 사용하고 엑스엠을 사용)
플레시도 기본적으로 동기식으로 동작
"외부와의 연동"은 비동기식으로 동작한다.
엑스엠엘 가져오기 이미지 가져오기 (네트웍을 탄다고 하면 모두 비동기식 )
1.0에서는 무비클립 로더를 이용했어야 했다.
function loadeMovie(파일명)
this.width=400
this.height=500
=======================================
!!!!!!비동기식 코딩방법 (아무리줄여도 3줄)
1.var 객체생성
2.데이터가 도착하면 할일
3.데이터 호출
외부텍스트 불러오기
var urlLoader:URLLoader=n
=================
로더 클래스 안에 컨텐츠라는 문이 있다.
컨텐츠로 제이피지 등이 들어온다.
로더는 이미지를담은 컨텐츠를 컨테이너로 담아온다.
===========
엑스엠일
var xml....
제정의 해야한다.
뉴 리퀘스트를 쓰지 않고(어려우니깐)스트링을 쓰려면 오버라이드를 펑션 앞에 써준다.
class XMLLoader extends URLloder
class XMLLoader extends ?????????
{
내용
}
오버라이드
접근제한자 바꿀 수 없다 매개변수 타입 개수 발수반환 타입 바꿀 수 없고 내용만 바꿀 수 있다.
그러므로 url:string 을 그대로 쓸 수 없다.