0

我正在使用网络上提供的 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);
    }
4

1 回答 1

0

这一行是完全错误的:

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

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

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

于 2014-04-09T08:26:05.580 回答