2011-03-04 4 views

답변

0

그냥 업데이 트를 - encoder.encode 반대로 그 많은 빨리 소스로 의해 BitmapAsset를 사용 할 수 있습니다. (깜박임 없음). 그러나 다음과 같이 설정해야합니다. (즉, ItemRenderer가 다시 렌더링해야 할 때마다 BitmapAsset을 다시 작성해야합니다. 이유는 묻지 않습니다.) :

<mx:Script> 
    <![CDATA[ 

    private var bmd_arr:Array = new Array(); 

    private function InitImgList():void {  
    var arr:Array = new Array(); 
    var r:Rectangle = new Rectangle(0,0,100,20);    
    var pt:Point = new Point(0,0); 
    for (r.x=0; r.x<img.width; r.x+=100) { 
     var bmd:BitmapData = new BitmapData(100,20,false,0);  
     bmd.copyPixels(Bitmap(img.content).bitmapData,r,pt); 
     bmd_arr.push(bmd);    
     var obj:Object = {label:"",n:bmd_arr.length-1};   
     arr.push(obj); 
    }  
    ImgList.dataProvider = arr; 
    } 

    public function get_img(n:int):BitmapAsset { 
    return new BitmapAsset(bmd_arr[n]); 
    } 

    ]]> 
    </mx:Script> 

    <mx:itemRenderer> 
    <mx:Component> 
    <mx:Canvas> 
     <mx:Image x="2" source="{outerDocument.get_img(data.n)}" scaleContent="false" /> 
     </mx:Canvas> 
    </mx:Component> 
    </mx:itemRenderer> 


</mx:TileList> 
0

인덱스를 필요로하는 이유는 각 셀에 대해 하나씩, Windows 이미지 (Windows ImageList와 같은) 마스터 이미지를 반복하고 각 셀에 대한 마스터 이미지의 일부를 가져 와서 일련의 이미지를 구성했기 때문입니다. 셀 렌더링을 새로 고칠 때 항상 마스터 이미지의 올바른 위치로 이동하도록 인덱스가 필요했습니다. 그러나 각 하위 이미지의 ByteArray를 만들어 DataProvider의 각 객체에 필드로 만들 수 있음을 발견했습니다. 어쨌든, 더 이상 "인덱스"를 필요가 없습니다 :

<mx:TileList id="ImgList" height="{parent.height-45}" width="226" 
    maxColumns="2" rowHeight="24" columnWidth="104" x="0" y="45" 
    creationComplete="{InitImgList()}"  
>  
    <mx:Script> 
    <![CDATA[ 

     private function InitImgList():void {  
     var arr:Array = new Array(); 
     var r:Rectangle = new Rectangle(0,0,100,20);    
     var pt:Point = new Point(0,0); 
     var encoder:PNGEncoder = new PNGEncoder(); 
     for (r.x=0; r.x<img.width; r.x+=100) { 
      var bmd:BitmapData = new BitmapData(100,20,true,0); 
      bmd.copyPixels(Bitmap(img.content).bitmapData,r,pt); 
      var obj:Object = {label:"", source:encoder.encode(bmd)}   
      arr.push(obj); 
     }  
     ImgList.dataProvider = arr; 
     } 

    ]]> 
    </mx:Script> 

    <mx:itemRenderer> 
    <mx:Component> 
     <mx:Canvas> 
     <mx:Image source="{data.source}" scaleContent="false" /> 
     </mx:Canvas> 
    </mx:Component> 
    </mx:itemRenderer> 


</mx:TileList> 
관련 문제