2011-06-22 6 views
1

いくつかの背景色が割り当てられた2つのキャンバスを持つカスタムコンポーネントがあります。今、私は色をハードコードした、私は外部のCSSファイルにそれらを移動したい。MXMLカスタムコンポーネントにカスタムスタイルプロパティを追加します。

だから私はこのようなCSS宣言したいと思います:私はdividerRightColorのようなカスタムスタイル名を定義することができますし、もしそうなら、どのように私は私のMXMLコンポーネント内にその値を使用できるかどう

ControlBar 
{ 
    dividerRightColor: #ffffff; 
    dividerLeftColor: #f3f3f3; 
} 

を私の質問はありますか?純粋なASコンポーネントの中でそれらを使用する例を見てきました。 CSSで

答えて

2

:MXMLで

.dividerRightColor { 
    background-color: #ffffff; 
} 


.dividerLeftColor { 
    background-color: #f3f3f3; 
} 

<mx:ControlBar> 
    <mx:Canvas styleName="dividerLeftColor"> 
     … 
    </mx:Canvas> 

    <mx:Canvas styleName="dividerRightColor"> 
     … 
    </mx:Canvas> 
</mx:ControlBar> 
+0

私はこのアプローチを単純なものとして使用しており、私の要件を満たしています。しかし、どちらも非常に良い答えです。 – midhunhk

2

あなたがコンポーネントにスタイルを作成する必要があるようですが、私に聞こえます。他の答えとしてスタイル値をコンポーネントに送信するだけではありません。

Read this documentation

基本的に、スタイルはプロパティの定義と同じ方法で定義されません。任意のスタイル名を設定することができます。ただし、コンポーネントはスタイルを使用して何をすべきかを知る必要があります。

override public function styleChanged(styleProp:String):void { 

    super.styleChanged(styleProp); 

    // Check to see if style changed. 
    if (styleProp=="dividerRightColor") 
    { 
     // do stuff to implement the style 
     dividerRight.setStyle('backgroundColor',getStyle('dividerRightColor')); 
    } 
} 

共通のアプローチは、「styleChanged」プロパティを設定し、表示リストを無効にして、updateDisplayList()メソッドで適切なスタイルの変更を行うことです:あなたはstyleChangedメソッドをオーバーライドする必要があることをすることができません。

コードヒンティングでスタイルを使用できるようにするには、あなたはこのように、メタデータを追加する必要があります:あなたはMXMLでのプロパティとしてスタイルを設定したい場合

[Style(name="dividerRightColor")] 

にのみ必要となります。

+0

このコードは、MXMLファイルのスクリプト部分にこのコードを追加すると機能しますか? – midhunhk

+0

styleChangedメソッドは、MXMLファイルのスクリプト部分に追加するとうまく動作するはずです。スタイルメタデータはmx:Metadataタグの中に入れなければならないと思います。 [おそらくFlex 4で違っている] – JeffryHouser

関連する問題