| as3.0에서 여래개의 이미지파일을 외부에서 로드하려면 일반적으로 flash 에서 기본적으로 제공하는 Loader 클래스를 반복적으로 사용하여 처리를 해야하는데 . 이를 위해 다수의 파일을 순차적 또는 한꺼번에 로드할 수 있는 좀더 통합적인 리소스 관리가 가능한 시퀀스 로더를 제작해 보았다.
본 클래스는 ASAP를 사용하여 제작한 loader 클래스를 AS3.0 버전으로 마이그레이션(migration)한 것이다. ASAP는 AS2.0 버전으로는 몇개 안되는 flash framework 중에 하나이다. 현재 전체적으로 AS3.0 버전으로 마이그레이션 중인 것 같다. 개인적인 생각으로는 코드자체가 방대하여 사용하기엔 좀 부담스럽지만 각각의 클래스와 클래스간의 연결고리, 이벤트처리와 같은 복합적인 내용들을 참고할 수 있어 유용한 부분이 있을 것이다. (ASAP as3.0 버전 SVN http://asaplibrary.googlecode.com/svn/)
<sample code>
import com.dstrict.ub.utils.loader.*; import com.dstrict.ub.events.*;
var loader:LoaderSequencer = new LoaderSequencer(1); loader.addEventListener(LoaderEvent.START, onLoadStart); loader.addEventListener(LoaderEvent.ALL_LOADED, onAllLoadFinished); loader.addEventListener(LoaderEvent.COMPLETE, onLoadDone); loader.addEventListener(LoaderEvent.PROGRESS, onLoadProgress); loader.addEventListener(LoaderEvent.ERROR, onIOError);
//아래와 같이 load 메서드를 사용하여 다수의 파일을 로더에 등록할 수 있다. // loader.load(fileUrl,fileName) loader.load("image1.jpg","1"); loader.load("image2.jpg","2"); loader.load("image3.jpg","3"); loader.load("image4.jpg","4");
function onLoadStart(evt:LoaderEvent):void{ //LoaderEvent 이벤트 오브젝트 속성인 fileName 으로 load 메서드의 fileName과 동일 trace(evt.toString()+"-------->start : "+evt.fileName); }
function onLoadDone(evt:LoaderEvent):void{ this["container"+evt.fileName].addChild(evt.loader.content); } function onAllLoadFinished(evt:LoaderEvent):void{ trace(evt.toString()+"-------->onAllLoadFinished"); } function onLoadProgress(evt:LoaderEvent):void{ trace(evt.toString()+"-------->progress : "+evt.bytesLoaded +" : "+evt.bytesTotal); } function onIOError(evt:LoaderEvent):void{ trace(evt.toString()+"-------->"+evt.message) }
view source code
download sample files...
|