我需要索引的原因是,我通過遍歷主圖像(如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>