2011-12-08 10 views
0

インターネットのどこかで、ラベルの色を設定するためのインライン関数を見つけました。インライン関数のMXML構文

このような何か:

color="{data >0 ? 0x006600 : 0xFF0000} 

基本的に、これは私が私たItemRendererではなく、のif-elseのif-elseの方法で必要な正確に何です。

上記のスクリプトでは、データ> 0と表示され、色を緑色に設定します。それ以外の場合は赤色に設定します。私が必要とするのは、グレーに変更された色を変更しないという追加のケースです。

このような「インライン」機能で達成できるのでしょうか?

答えて

1

あなたはこのような何か行うことができます。

data==null ? 0xCCCCCC : (data>0 ? 0x006600 : 0xFF0000) 

をしかし、根本的な目標は何ですか?あなたはスタイル機能を使うほうが良いかもしれません。

+0

目的は入力値に応じて色を更新することです。実際には、データには、頻繁に(バインディングを使用して)更新される2つのプロパティnewValueとoldValueがあります。私が必要とするのは、ラベルの色を変えることです(私のスキンクラスの背景色と正確に同じですが、簡単に始めることができます;))。実際にはもう少し複雑なので、スタイル関数はおそらく行く方法ですが、変更されたデータオブジェクトを持つアイテムレンダリングでどのようにそのような関数が機能するのか分かりません。 – AlBirdie

+0

レンダラーの外にあるので、レンダラーを変更することなく簡単に変更することができます。 Flex 3では、http://flexdiary.blogspot.com/search/label/DataGridのような操作を行うことができます。 Flex 3または4のいずれかで、ClassFactoryを使用して、スタイルを決定するコールバック関数を設定できるプロパティを持つレンダラーを作成できます。その問題は、呼び出されたときに処理する必要がありますが、TileListまたはDataGridのstyleFunctionが機能するだけです。 –

1

3項演算子と呼ばれ、小さな条件文を明確にすることは素晴らしいことです。しかし、一般的に三項ステートメントを入れ子にすることはお勧めしません。

+0

あなたがそのルートに行きたい場合は、できる限り多くの条件文を避ける方が一般的にはより良い方法です。http://www.antiifcampaign.com/ –