인덱스를 필요로하는 이유는 각 셀에 대해 하나씩, 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>