Actionscript flex: Converting # colors to uint
I'm working with several components that take color as a uint, but the colors I have are in the format of "#161616". I'm not sure what the relation between the 2 types of colors are or how to go from one开发者_StackOverflow to another.
It doesn't have to be an actionscript solution. I have only a small number of these colors, so can be done manually too.
var color:uint = 0x161616;
Or, to convert them programmatically:
var s:String = "#161616";
var color:uint = uint("0x" + s.substr(1));
Be aware that stylesheets in Flex want the color values in the form #FFFFFF ... NOT 0xFFFFFF. MXML element style properties don't care. Although when you start writing something like:
<mx:VBox backgroundColor="
the Intellisense prompts you for a uint value; if you go ahead and complete it like so
<mx:VBox backgroundColor="#FFFFFF"></VBox>
it will still make your backgroundColor the same as if you had written
<mx:VBox backgroundColor="0xFFFFFF"></VBox>
Here you are 2 of my utils functions:
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;
}
the correct way is by using StyleManager.getColorName()
see the full documentation
var i : uint = uint("0x161616");
精彩评论