2009-11-11 7 views
0

플렉스 앱에 내가 사용중인 TileList 용 아이템 렌더러가 있습니다. 런타임에 이미지를 Item Renderer에로드합니다. 이미지 너비와 높이의 크기를 조정하려면 다음 코드를 사용하고 있습니다. 그러나 그것은 작동하지 않는 것 같습니다. 나는 flex 앱을 디버깅하여 실제 너비와 높이 값이 할당되고 있음을 확인했다. 그러나 이미지가 올바른 크기로 보이지 않습니다. complete 이벤트가 트리거 될 때 contentWidthcontentHeight 속성의 값은 최종되지 않습니다동적 이미지 크기 조정

private function Init() :void 
{ 
    tileImg = new Image(); 
    tileImg.source = data.ICON; 
    tileImg.toolTip = data.TITLE; 
    tileImg.buttonMode = true; 
    tileImg.addEventListener(Event.COMPLETE, AdjustImageDimensions); 
    this.addChild(tileImg); 
} 

private function AdjustImageDimensions(e:Event):void 
{ 
    tileImg.width = (e.currentTarget as Image).contentWidth; 
    tileImg.height = (e.currentTarget as Image).contentHeight; 
} 

답변

0

좋아요, 제가 전에는 이런 문제가 있었는데 로더 클래스를 사용하여 문제를 해결했습니다. 파일이로드 된 후 정보를 가져올 수 있습니다. 로더에 첨부 된 이벤트 리스너가 필요합니다. 어쨌든 이미지를 어디에서 구하고 있습니까? 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 
    } 

    */ 
} 

}

1

: 다음은 내 코드입니다. updateComplete 이벤트가 트리거 된 후에 값을 가져올 수 있습니다.

+0

예를하는 데 도움이

희망. 그게 내가 처음에 시도한거야. 그러나 updateComplete 단계에서 얻은 폭과 높이는 0과 0입니다. 하지만 Complete 이벤트를 사용하면 실제 값을 얻었습니다. 문제는 이미지에 해당 값이 할당되지 않는다는 것입니다. 또는 할당되지만 이미지는 시각적으로 크기가 조정되지 않습니다. – CodeQrius