Tag: Loader
로드한 파일이 AS2.0인지 AS3.0인지 런타임에 확인하는 방법
by 세계의끝 on 8.22, 2010, under AS3.0 API
이런 경우를 가정해 봅시다. 여러분은 이번에 새로운 이 러닝(e-learning) 프로젝트에 개발자로 참여하게 되었습니다. 이 러닝이라 별로 하고 싶진 않았지만 영업 파트에서 다른 프로젝트와 연계된 작업이라고 하는통에 떠 안을 수 밖에 없었습니다. 그러나 여러분의 회사는 이 러닝 전문회사가 아닌데다가 실제로 플래시를 다루는 직원은 여러분 회사에 여러분 외에는 없습니다. (이런 경우 은근히 많을거라 생각합니다.)
그래서 결국 플래시로 프레임웍, 즉, UI는 여러분이 제작하게 되었고, (이 러닝 업계에서는 프로토타입을 만든다는 표현을 하죠) 차시별 작업은 경험이 많다고 하는 외주 팀에게 하청을 주기로 하였습니다. 여러분은 이제 제법 클래스를 이용해 프로젝트를 수행할 수 있게 되었고, AS2.0 으로 프로젝트를 만들지 않으므로 AS3.0 으로 이 러닝 프로젝트를 수행하려고 합니다. 흔하디 흔한 이 러닝 프로젝트지만 여러분은 좀 다르게 만들고 싶어하죠.
그런데 여기서 문제가 발생합니다.
TweenMax 로 유명한 GreenSock, 통합로더 LoaderMax 라이브러리 공개
by 세계의끝 on 6.18, 2010, under AS3.0 API
TweenMax/TweenLite 로 유명한 GreenSock 이 6월 16일자로 통합 로더를 발표하고 LoaderMax 라고 이름 지었습니다. GreenSock 은 TweenMax/TweenLite 개발은 대략 끝내고, 얼마전에는 타임라인을 제어하는 TimelineMax/TimelineLite 를 내놓더니, 이번에는 통합 로더군요.
이 라이브러리는 단순히 swf, image, video 등을 로드하자는게 아니라 xml, css, mp3, txt 나 binary 데이터 까지 플래시에서 로드 가능한 거의 모든 종류의 외부 자원들을 로드할 수 있습니다.
사실 이것 뿐이라면 “그정도의 통합 로더는 나도 만들어 사용하고 있다” 고 하실 분들이 있을텐데요. 제작자인 GreenSock 은 이전에 발표한 TweenMax 에서 보여주듯이 개발자에게 상당히 매력적인 편의 기능을 동시에 제공하고 있습니다.
로드된 swf 에서 다시 한단계 건너 로드되는(2단계 이상의 로더구조) 외부 자원에 대한 관리를 하거나, 다수의 외부 자원을 동시에 로드할 수 있는 소위 벌크로더 구현, 그 벌크로더의 로딩 순서를 제어할 수 있는 기능도 제공합니다. 그중에서도 가장 주목할만한 것은 LoaderMax 와 관련 있는 미리 약속된 XML 노드이름을 자동으로 파싱해서 로더 객체를 만들어 내고 속성까지 설정할 수 있는 XML 자동 파싱 기능입니다.
아래 설명을 읽어내려가면, 전반적으로 개발자의 번거로운 코딩 작업들을 알아서 처리해 주는 정말 편리한 라이브러리라는것을 알 수 있습니다. 귀차니스트인 저에게는 딱이군요.
이 예제는 GreenSock 이 만든 데모 예제 입니다. LoaderMax 가 어떻게 동작하는지 확인해보세요. 썸네일이 뜨기 전의 전체 로딩 작업 부터 LoaderMax 의 영역입니다.
아래는 http://www.greensock.com/loadermax/ 의 요약 번역 입니다. 저는 전문 번역자가 아니므로 일부 번역에 에러가 있을 수 있습니다. 이상한 점이 있으면 원문을 확인하세요.
도큐먼트 클래스 *.as 파일을 연결하지 않은 fla 파일의 도큐먼트 클래스 이름은?
by 세계의끝 on 2.25, 2010, under AS3.0 API
작년 7월에 작성한 “AS3.0 로더(Loader)로 불러온 다른 swf 의 클래스 사용하기” 를 보면, ApplicationDomain 클래스의 getDefinition() 메서드를 이용해서 다른 로더를 통해 가지고 온 다른 swf 파일의 클래스를 사용하는 방법을 알아본 바 있습니다.
그런데 이 포스트에 “료”님이, fla 파일의 타임라인에 직접 코딩한 경우에는 어떻게 해야 하느냐고 질문하셨길래 방법을 찾아 보았습니다.
우리가 Fla 에 도큐먼트 클래스를 연결해서 swf 를 만들었을 경우, Main.as 도큐먼트 클래스에서 trace( this ) 를 하면 [object Main] 이 출력 됩니다. “AS3.0 로더(Loader)로 불러온 다른 swf 의 클래스 사용하기” 의 예제 코드를 보면 다른 swf 의 도큐먼트 클래스의 이름을 통해 런타임으로 클래스로 만들고 그것을 객체화 하여 도큐먼트 클래스 내부에 있는 여러가지 자원들을 참조하게 됩니다. 도큐먼트 클래스의 이름이 곧 ApplicationDomain 이 되는 것이죠. 그것은 결국 도큐먼트 클래스의 클래스 이름을 알 수 없다면 getDefinition() 으로는 참조가 불가능하다는 이야기가 됩니다.
그런데 만약 도큐먼트 클래스를 사용하지 않은 fla 파일로 만든 swf 파일이라면 어떻게 되는 걸까요? “료”님의 질문을 받고 저역시 이 부분에서 살짝 당황했습니다. 도큐먼트 클래스 as 파일이 없는데 도큐먼트 클래스의 이름을 어떻게 알아낼 수 있을까 하는 것이었죠.
Blog under the Creative Commons Attribution-NoDerivs 3.0 License