2012-07-05 50 views
0

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

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不适用,并且复选框没有样式。如果我风格的标签它的作品...几乎任何其他风格适用..但不fillColors。我在这里做错了什么?

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

回答

0

尝试使用样式表,包括像:

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

进口它通过下面的语句:

<mx:Style source="yourstylesheet.css"/> 
0

你跟的代码块不在例如一个问题,即常量UiConstants.ANNOTATOR_COLORS [colorIndex];等

我修剪你的代码只是最低限度研究你的缺陷和样式的设置工作没有问题。

下面的代码工作完全正常,运行这个和检查出来:

<?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> 

这应该指向你在正确的方向...

+0

谢谢但是,这并不在我的情况下工作,我尝试了硬编码的“红色”值,并没有工作。 – user253530 2012-07-12 18:51:03

+0

我告诉你的是,你遇到的问题不在你提供的代码中。如果你运行我发布的示例代码,它工作得很好。您的问题不在您提供的代码中。您能否创建一个小型自包含可运行版本的问题? – Nate 2012-07-12 19:02:22