Filing under the “why didn’t I find this before” folder. On the Adobe Flex forums, there was a question about changing the color value of a button based on a switch statement. The user was trying to change the value to “Red”, “Yellow” or “Green”. In the button, the type for color is uint value, so the input needs to be something like “0x990000” for “Red”. I usually just insert in the uint value for a color and not the name, since I usually have to change it. But, this question on the forum got me thinking and searching for an answer. The simple answer is the IStyleManager2, which allows you to get the uint value of a color name. Presto!
Here’s the reply to the user’s question that I have been attempting to post to the forum.
First set a declaration of the variable. I am setting the default value to Black in uint value.
<fx:Declarations> <fx:uint id="batteryStatusColor">0x000000</fx:uint></fx:Declarations>
This will allow you to bind it to your button parameter.
<s:Button id="Battery" x="791" y="513" width="124" height="46" label="Battery" fontSize="20" color="{batteryStatusColor}" />
Then, in your function, make sure you convert the String value of the color to a uint
private function changeBatteryStatusColor(batteryStatus:int):void { var tmpColorString:String = "Black"; switch(batteryStatus) { case 1: tmpColorString = "Red"; break; case 2: tmpColorString = "Green"; break; default: tmpColorString = "Yellow"; break; } var newStyleManger:IStyleManager2 = StyleManager.getStyleManager(this.moduleFactory); batteryStatusColor = newStyleManger.getColorName(tmpColorString); }
The key part is the IStyleManager call that converts the String value of the color to a uint.
About DeanLogic
Dean has been playing around with programming ever since his family got an IBM PC back in the early 80's. Things have changed since BASICA and Dean has dabbled in HTML, JavaScript, Action Script, Flex, Flash, PHP, C#, C++, J2ME and SQL. On this site Dean likes to share his adventures in coding. And since programming isn't enough of a time killer, Dean has also picked up the hobby of short film creation.