Actionscript 3 Flash AS3-彩色用户名列表框不同颜色

Actionscript 3 Flash AS3-彩色用户名列表框不同颜色,actionscript-3,flash,list,Actionscript 3,Flash,List,我已经找到了一些关于CellRenderer的教程,这些教程将更改整个列表或所选项目,但我对AS3还不是很好,需要一些帮助。我正在从xml文件加载用户列表。每样东西都很好,但我想做的是根据团队的实际情况给它上色 同样,它加载到列表中很好,我要做的是在循环中从xml文件中添加它们,如果它的管理员将其设置为红色字体,绿色字体表示mod,黑色字体表示member 有什么帮助吗?需要注意以下几点: 如果您计划使用字体格式,还需要设置为true 由于要为单个单元格设置样式,首先需要等待列表填充完成组件生命

我已经找到了一些关于CellRenderer的教程,这些教程将更改整个列表或所选项目,但我对AS3还不是很好,需要一些帮助。我正在从xml文件加载用户列表。每样东西都很好,但我想做的是根据团队的实际情况给它上色

同样,它加载到列表中很好,我要做的是在循环中从xml文件中添加它们,如果它的管理员将其设置为红色字体,绿色字体表示mod,黑色字体表示member


有什么帮助吗?

需要注意以下几点:

如果您计划使用字体格式,还需要设置为true 由于要为单个单元格设置样式,首先需要等待列表填充完成组件生命周期的内部数据设置部分。这可以通过调用或 最后,在处理程序中,通过设置样式的方法访问各个单元格渲染器。 下面是一个基本示例,将a、b、c想象为管理员、模块、成员:

//in a setup function
{
//some dummy data
            var data:XML = <users>
                            <user name="user 1" group="a" />
                            <user name="user 2" group="a" />
                            <user name="user 3" group="a" />
                            <user name="user 4" group="b" />
                            <user name="user 5" group="b" />
                            <user name="user 6" group="b" />
                            <user name="user 7" group="c" />
                            <user name="user 8" group="c" />
                            <user name="user 9" group="c" />
                           </users>
            //create a list
            var list:List = addChild(new List()) as List;
            list.setSize(600,400);
            list.move(0,400);
            //setup a font AND set embefFonts to true
            list.setRendererStyle("textFormat",new TextFormat("Siemens Sans SC Black",11,0xFF9900));
            list.setRendererStyle("embedFonts",true);
            //populate list
            for(var i:int = 0 ; i < data.user.length(); i++) list.addItem({label:String(data.user[i].@name),group:String(data.user[i].@group)});
            list.invalidate();//tell list to refresh itself
            list.addEventListener(Event.RENDER,listUpdated);//listen for the refresh
}
        //after the list refreshed
        private function listUpdated(event:Event):void{
            //setup text formats
            var formats:Dictionary = new Dictionary();
            formats["a"] = new TextFormat("Siemens Sans SC Black",11,0x990000); 
            formats["b"] = new TextFormat("Siemens Sans SC Black",11,0x009900); 
            formats["c"] = new TextFormat("Siemens Sans SC Black",11,0x000099);

            var list:List = List(event.currentTarget);
            for(var i:int = 0 ; i < list.dataProvider.length; i++) {
                var item:Object = list.getItemAt(i);
                var cr:CellRenderer = CellRenderer(list.itemToCellRenderer(item));//get the individual cell renderers
                cr.setStyle("textFormat",formats[item.group]); //set styles per cell
            }
            list.removeEventListener(Event.RENDER,listUpdated);//clear listener
        }

我们通常在列表的项目渲染器中处理这类事情。项目呈现器在其上设置了给定列表项目的数据,然后它可以适当地呈现自身,即:如果特定数据元素用于管理员,则呈现器使用红色字体。如果你展示了你正在使用的代码,有人会给你一个更明确的答案: