2012-07-05 31 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