actionscript / Flex で文字列を uint に変換する
-
02-07-2019 - |
質問
コンポーネントを作成していて、多くのフレックス コントロールと同じようにカラー プロパティを公開したいと考えています。たとえば、次のような単純なコンポーネントがあるとしましょう。それを foo_label と呼びます。
<mx:Canvas>
<mx:Script>
[Bindable] public var color:uint;
</mx:Script>
<mx:Label text="foobar" color="{color}" />
</mx:Canvas>
次に、次のようにコンポーネントを別の mxml ファイルに追加します。
<foo:foo_label color="red" />
コンパイルすると、コンパイラーは次のように文句を言います。テキスト「red」から uint 型の値を解析できません。ただし、プレーンなラベルを使用する場合は、次のことができます
<mx:Label text="foobar" color="red">
問題なく、color プロパティは uint 型のままです。
私の質問は、コンポーネントのテキストの色を制御できるようにパブリック プロパティを公開するにはどうすればよいですか?mx コントロールの uint フィールドとして文字列「red」を使用できるのに、カスタム コンポーネントでは同じことができないのはなぜですか。何か特別なことをする必要があるのでしょうか?
ありがとう。
解決
色は特性ではなく、スタイルです。次のようにスタイルを定義する必要があります。
[Style(name="labelColor", type="uint", format="Color" )]
(MXML で直接定義する場合はタグで囲みます)。次に、このスタイルを処理し、必要なコントロールに適用するための ActionScript を追加する必要があります。を参照してください。 http://livedocs.adobe.com/flex/3/html/help.html?content=skinstyle_1.html 詳細については。
他のヒント
ここに私の 2 つの utils 関数があります。
public static function convertUintToString( color:uint ):String {
return color.toString(16);
}
public static function convertStringToUint(value:String, mask:String):uint {
var colorString:String = "0x" + value;
var colorUint:uint = mx.core.Singleton.getInstance("mx.styles::IStyleManager2").getColorName( colorString );
return colorUint;
}
所属していません StackOverflow