Причина, по которой мне понадобился индекс, заключается в том, что я строил серию изображений, по одному для каждой ячейки, путем итерации по главному изображению (например, списку изображений Windows) и получая часть главного изображения для каждой ячейки. Мне нужен был индекс, чтобы при обновлении рендеринга ячейки он всегда находился в правильном месте в главном изображении. Но я обнаружил, что могу создать 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>