내맘대로 라이프

로더로 로드한 이미지파일의 크기 변경 본문

Flash Actions Script 3.0 (as3)

로더로 로드한 이미지파일의 크기 변경

내눈물 2016. 10. 17. 10:16

무슨 이야기인고 하니

640x480의 이미지를 로드하여 1280x1024로 강제적으로 늘리려고 할때 우찌해야하는가.. 에 대한 이야기입니다.


var m_imgLoader:Loader = new Loader();
intro_page.intro_img.addChild(m_imgLoader);
var request = new URLRequest("sampleImg.png");
m_imgLoader.load(request);
m_imgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onIntroFileLoadcomplete); 
m_imgLoader.contentLoaderInfo.addEventListener( IOErrorEvent.IO_ERROR, onLoadFail );
 
일단 이미지를 로드하기 위해선 이정도가 필요하죠
이미지 로더를 만들어서
intro_page라는 무비클립의 intro_img라는 무비클립에 붙여넣습니다.
이랬을 경우


function onIntroFileLoadcomplete(e:Event) {
    intro_page.intro_img.width = 1280;
    intro_page.intro_img.height = 1024;
}


이렇게하면 강제적으로 늘어납니다만
불러오는 이미지가 intro_img뿐만 아니라 여러개의 무비클립에 붙거나 한다면
모든 무비클립을 일일이 늘려줄 수도 없고 말이죠.. 귀찮습니다.
로드가 완료 되었을 때 로드한 고놈을 찾아내면 해결이 되겠죠.
그것은 어떻게 하느냐?!
요렇게 합니다.


function onIntroFileLoadcomplete(e:Event) {
   e.target.loader.content.width = 1280;
   e.target.loader.content.height = 1024;
}


e(이벤트)의 타겟은 loaderInfo가 됩니다. 로더인포는 로드 동작에 대한 정보를 담고 있습니다.

로더인포의 loader는 로드한 로더를 의미하고 위에서는 m_imgLoader가 되겠죠

content는 로더가 로더한 개체를 의미합니다. sampleImg.png가 되겠지만

이는 로드되면서 비트맵 형태로 변환되는듯합니다.

그래서! 그놈의 크기를 바꿔주는거죠

swf를 로드하든 png를 로드하든 뭘 로드하는 같은 형식입니다.

 

e.target.width를 바꾸면 되는거 아니냐!! 는 분이 계실 수도 있겠습니다만

e.target.width는 읽기전용 값입니다.

로드한 파일의 정보는 가지고 있지만 수정할 수는 없네요

다른 방법도 있겠습니다만, 일단 저는 이런 방법으로 했습니다 :)