'loadBytes'에 해당되는 글 1건

  1. 2008.07.29 runtime시 외부 이미지파일 불러오기
외부에서 이미지 파일을 불러오는 것은 컴파일시 [Embed]를 사용하여 swf파일안에 포함시킬 수 있다. 하지만 실행중에 이미지를 불러오려면 Load라는 클래스를 사용하여야한다. Load클래스는 이미지파일이나 비디오등의 visual관련된 파일을 불러오는 역할을 담당하고 URLLoader는 데이터를 주고 받는데 사용한다.

Loader를 통해 불러올 수 있는 파일은 jpg , gif , png , swf가 있고 load라는 메서드를 통해 파일을 불러온다.
외부의 파일로 접근하기 위해서는 Loader클래스 단독적으로 사용할 수 없다. 서버나 로컬에 접근할 수 있는 통로를 담당하는 URLRequest라는 클래스와 함께 사용한다.
 var ldr:Loader = new Loader();
ldr.load( new URLRequest( "링크" ));

위의 코드는  로더 클래스를 통해 외부 이미지를 불러오는 명령이다. 그리고 호출이후 어떠한 상태인지를 알수 있는 여러가지 이벤트를 사용할 수 있다.

* 이벤트
Event.OPEN : 로드가 시작될 때 전달됩니다.

ProgressEvent.PROGRESS : 파일이 로드되는 동안 계속해서 발생.

Event.COMPLETE : 파일 다운로드가 완료된 후, 로드된 무비 클립의 메서드와 속성이 사용 가능한 상태가 되기 전에 전달.

Event.INIT : 로드된 SWF 파일을 조작할 수 있도록, 로드된 SWF 파일의 속성과 메서드가 액세스 가능한 상태가 된 후에 전달됩니다. 이 이벤트는 complete 핸들러에 앞서 전달됩니다. 스트리밍 SWF 파일의 경우 init 이벤트는 complete 이벤트보다 훨씬 더 이전에 발생할 수 있습니다. 대부분의 경우에는 init 핸들러를 사용합니다.

HTTPStatusEvent.HTTP_STATUS : 로드 중 실패한 HTTP요청이 감지될 때 발생

IOErrorEvent.IO_ERROR : 파일을 로드할 수 없는 경우 또는 로드 프로세스 중 오류가 발생.

SecurityErrorEvent.SECURITY_ERROR :  보안샌드박스 때문에 로드할 수 없을 때 발생한다.

이러한 이벤트는 Loader클래스에 직접 사용하는 것이 아니고 contentLoaderInfo라는 속성에 리스너를 추가한다. contentLoaderInfo는 어떠한 대상이 로드될 때의 정보를 파악하여 제공하기 위해 설계된 것이다.

Loader클래스는 DisplayObjectContainer를 상속받은 클래스이다. 따라서 불러들인 컨텐츠는 Loader안에 존재하며 content속성을 통해서 컨텐츠에 접근할 수 있다.
가령 A.swf에 run라는 메서드가 있다. 이 A.swf파일을 ldr이라는 delegate로 불러들였을 때  run를 호출하기 위해서 다음과 같이 코딩한다.
var movie:* = ldr.content;
movie.run();

위에 movie의 데이터타입을 *로 설정한것은 현재 이 프로젝트에는 run이라는 메서드가 없으므로 에러를 발생한다. 이를 방지하기 위한 처리이다.

* 외부에서 이미지파일의 데이터 자체를 받아오는 경우 인코더가 필요하며 ByteArray로 변환된 데이터를 loadBytes라는 명령문으로 이미지처리 할 수있다.
Posted by 버터백통