Flash AS3 TileList DataProvider getIndex

时间:2014-04-09 04:32:44

标签: actionscript-3 cellrenderer tilelist

我正在使用网络上提供的Flash代码。我将其修改为区分奇数行背景和偶数行的颜色。但我无法访问data.index。如何访问索引?

import fl.controls.TileList;
import fl.core.UIComponent;
import fl.data.DataProvider;
import fl.events.ListEvent;
import flash.display.Sprite;
import flash.events.Event;

public class CellRendererExample extends Sprite
{
    public function CellRendererExample() {
        var index:int;
        var dp:DataProvider = new DataProvider();
        var totalEntries:uint = 42;
        var i:uint;
        for(i=0; i<totalEntries; i++) {
            dp.addItem( { label:"Item "+i ,index:i} );            
        }

        var myTileList = new TileList();
        myTileList.dataProvider = dp;
        myTileList.allowMultipleSelection = true;
        myTileList.columnWidth = 125;
        myTileList.rowHeight = 30;
        myTileList.columnCount = 1;
        myTileList.rowCount = 6;
        myTileList.move(10,10);
        myTileList.direction = "VERTICAL";


        for(i=0; i<totalEntries; i++) {
        if (dp.label[i].index%2==0){
        myTileList.setStyle('cellRenderer', MyRenderer);    }
        else{
            myTileList.setStyle('cellRenderer', MyAnotherRenderer); 
            }
        }


        addChild(myTileList);
    }

1 个答案:

答案 0 :(得分:0)

这一行是完全错误的:

if (dp.label[i].index%2==0){

DataProvider只包含您的项目,类似于Array。 label[i]不会返回任何内容,index不是该对象的属性(labelindex是您放入DataProvider的对象的属性。)< / p>

首先,您的i变量实际上是索引。您可以查看是否i % 2 == 0。 如果您想要DataProvider中的任何特定信息(在元素中添加不同的索引),可以使用dp.getItemAt(i) - &gt;这将为您提供每个项目,您可以检查它的属性:dp.getItemAt(i).index % 2 == 0