0

我有大约 8 个使用 for 循环动态创建的复选框。每个复选框都有不同的颜色。基本上我想使用 8 种预定义颜色更改每个复选框(不包括标签)的填充颜色。这是我的代码。

for (var i:int=0; i <= annotatorNames.length; i++)
{
    var checkbox:CheckBox = new CheckBox();
    var colorIndex:int = parseInt(annotatorColours[i]) - 1;
    var checkboxColor:String = UiConstants.ANNOTATOR_COLORS[colorIndex];

    checkbox.label=annotatorNames[i];
    checkbox.selected=true;
    checkbox.setStyle("fillColors", [checkboxColor, checkboxColor, checkboxColor, checkboxColor]);
    annotatorCheckboxes[i] = checkbox;
    this.addChild(checkbox);
}

由于某种原因,fillCollors 不适用,并且复选框未设置样式。如果我设置标签的样式,它可以工作……几乎任何其他样式都适用……但不是填充颜色。我在这里做错了什么?

代码没有错误,颜色为“0XA52A2A”的形式。

4

2 回答 2

0

您对示例中没有的代码片段有疑问,即常量 UiConstants.ANNOTATOR_COLORS[colorIndex]; ETC

我将您的代码修剪到最低限度以研究您的缺陷,并且样式的设置没有问题。

下面的代码工作得很好,运行它并检查一下:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()">
<mx:Script>
    <![CDATA[
        import mx.controls.CheckBox;
        private function init() : void {
            for (var i:int=0; i <= 8; i++)
            {
                var checkbox:CheckBox = new CheckBox();
                var checkboxColor:String = 'red';

                checkbox.label=i.toString();
                checkbox.selected=true;
                checkbox.setStyle("fillColors", [checkboxColor, checkboxColor, checkboxColor, checkboxColor]);
                holder.addChild(checkbox);
            }
        }
    ]]>
</mx:Script>
<mx:HBox id="holder"/>
</mx:Application>

那应该为您指明正确的方向...

于 2012-07-12T18:17:26.723 回答
0

尝试使用样式表,包括:

CheckBox {
   fillColors: #yourColor, #yourColor, #yourColor, #yourColor;
}

通过以下语句导入它:

<mx:Style source="yourstylesheet.css"/>
于 2012-07-05T16:15:15.997 回答