좋아요, 제가 전에는 이런 문제가 있었는데 로더 클래스를 사용하여 문제를 해결했습니다. 파일이로드 된 후 정보를 가져올 수 있습니다. 로더에 첨부 된 이벤트 리스너가 필요합니다. 어쨌든 이미지를 어디에서 구하고 있습니까? URL 또는 FileSystem? 여기
빠른 예입니다
package
{ 수입 flash.display.Loader의; import flash.events.Event; import flash.net.FileReference;
import mx.controls.Image;
public class MyItemRenderer
{
private var fileRef:FileReference = new FileReference();
private var myLoader:Loader = new Loader();
public var myDynamicImage:Image;
public function MyItemRenderer()
{
fileRef.addEventListener(Event.SELECT, loadImageToCache);
fileRef.addEventListener(Event.COMPLETE, sendToLoader);
fileRef.browse(/* put file types in this array */);
}
private function loadImageToCache(e:Event):void
{
fileRef.load();
}
private function sendToLoader(e:Event):void
{
myLoader.loadBytes(fileRef.data);
myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, createImage);
}
private function createImage(e:Event):void
{
var file:Loader = Loader(e.target);
myDynamicImage = new Image();
myDynamicImage.source = file;
myDynamicImage.width = file.width;
myDynamicImage.height = file.height;
}
//now that would be great if you can control the width and height
//of these images at runtime, BUT,
//chances are if their dynamically loaded, you can't so here...
private function getImgAR(file:Loader):Number
{
return file.width/file.height;
}
//then use this createImage function instead...
/*
private function createImage(e:Event):void
{
var file:Loader = Loader(e.target);
myDynamicImage = new Image();
myDynamicImage.source = file;
myDynamicImage.width = 120*getImgAR(file); //you can substitue 120 for your required size
myDynamicImage.height = 120;//same here
}
*/
}
}
예를하는 데 도움이
희망. 그게 내가 처음에 시도한거야. 그러나 updateComplete 단계에서 얻은 폭과 높이는 0과 0입니다. 하지만 Complete 이벤트를 사용하면 실제 값을 얻었습니다. 문제는 이미지에 해당 값이 할당되지 않는다는 것입니다. 또는 할당되지만 이미지는 시각적으로 크기가 조정되지 않습니다. – CodeQrius