0

forループを使用して動的に作成される約8つのチェックボックスがあります。各チェックボックスの色は異なります。基本的に、8つの定義済みの色を使用して、すべてのチェックボックス(ラベルは含まれていません)のfillColorを変更したいと考えています。これが私のコードです。

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」の形式です。

4

2 に答える 2

0

次のようなスタイルシートを使用してみてください。

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

次のステートメントでインポートします。

<mx:Style source="yourstylesheet.css"/>
于 2012-07-05T16:15:15.997 に答える
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>

それはあなたを正しい方向に向けるはずです...

于 2012-07-12T18:17:26.723 に答える