보통 이미지를 그냥 로드만 해서 사용했을 경우 플래시상에서의 부담이 엄청나게 된다.
이 문제를 해결하기 위해서는 이미지를 껍질만 로드하고 나머지 알갱이는 버리는 형식으로 사용하면 된다.
아래의 코드를 보면 그리 어렵지 않게 알맹이만 빼낼 수 있다~
위처럼 이미지를 로드하면 더욱 가벼운 플래시환경을 만들수있다.
이 문제를 해결하기 위해서는 이미지를 껍질만 로드하고 나머지 알갱이는 버리는 형식으로 사용하면 된다.
아래의 코드를 보면 그리 어렵지 않게 알맹이만 빼낼 수 있다~
package
{
import flash.display.*;
import flash.events.*;
import flash.net.URLRequest;
import flash.system.LoaderContext;
public class ImgLoader extends Sprite
{
private var _loader:Loader;
public function ImgLoader()
{
//일반적인 Loader 코드
_loader = new Loader();
_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
_loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onError);
_loader.load(new URLRequest("image/test.jpg"), new LoaderContext(true));
}
//로드된 이미지의 껍질만 복사한다.
private function duplicateImage(original:Bitmap):Bitmap {
//로드된 이미지의 껍질을 복사하여 Bitmap에 넣는다.
var image:Bitmap = new Bitmap(original.bitmapData.clone());
//복사된 이미지의 질감을 부드럽게 바꿔준다.
image.smoothing = true;
return image;
}
private function onComplete(e:Event):void {
//duplicateImage함수를 이용해 복사된 이미지를 image라는 bitmap에 넣어준다.
var image:Bitmap = duplicateImage(Bitmap(_loader.content));
//image라는 비트맵을 출력한다. loader를 바로 addChild 시켰을때와 동일한 모습을 보여준다.
addChild(image);
//껍질을 복사했기 때문에 필요없는 loader를 제거한다.
var loaderDispose:LoaderInfo = _loader.contentLoaderInfo;
//loader에 로드된 것이 액세스가 허용되어있는지 이미지가 맞는지를 확인한후
//처분한다(dispose)
if ( loaderDispose.childAllowsParent && loaderDispose.content is Bitmap) {
(loaderDispose.content as Bitmap).bitmapData.dispose();
}
//확실한 처리를 위해 실행한다.
_loader.unload();
_loader = null;
}
private function onError(e:Event):void {
_loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, onComplete);
_loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, onError);
}
}
}
위처럼 이미지를 로드하면 더욱 가벼운 플래시환경을 만들수있다.
'현명한 IT > ActionScript 3.0' 카테고리의 다른 글
| [AS3] Loader 용량줄이기 - 이미지 로드(Image Load) (0) | 2010/03/20 |
|---|---|
| [AS3] 플래시 임베디드 폰트 사용하기 - Flash embedded font (1) | 2010/03/19 |
| 상대경로를 절대경로로 바꿔주는 함수 (1) | 2010/03/19 |




댓글을 달아 주세요