AS3 Simple Color Code Converter
I just finished writing my first AS3 application. Part of its functionality allowed a color code to be passed in as a variable. The problem I ran into was that the color code was being passed by web developers. Instead of “0xFFCC00″ they would pass “#FFCC00″. Understandable mistake, but garbage to Flash, so the custom color would never be applied.
Rather than require the RGB code to be passed in, I wrote a short function to check for the HTML Hex format and convert it if necessary. It uses a regular expression to delete any occurrence of ‘#’ and it adds “0x” to the beginning of the color code if it doesn’t already exist.
To see how it works, paste the following code into a blank Flash document and preview it:
//Create a text field and populate it
var myTextField:TextField = new TextField();
myTextField.text = "Hello World";
addChild(myTextField);
//Convert incorrectly formatted color string
var passedColor:String = "#FFCC00";
var newColor:String = fixColorCode(passedColor);
trace(newColor); //0xFFCC00 will be returned
//change color
var newFormat:TextFormat = new TextFormat();
newFormat.color = newColor;
myTextField.setTextFormat(newFormat);
function fixColorCode($color:String) :String
{
var submittedColor:String = $color;
var validColor:String;
var pattern:RegExp = /#/;
submittedColor = $color.replace(pattern,"");
pattern = /0x/;
if (submittedColor.substring(0,2) != "0x") {
validColor = "0x"+submittedColor;
} else {
validColor = submittedColor;
}
return validColor;
}
If you enjoyed this post, please consider to leave a comment or subscribe to the feed and get future articles delivered to your feed reader.



Returning a uint would be much more useful. TextFormat.color accepts an object and converts to a uint internally, but this won’t be the case with all classes that require a color.
function fixColorCode( color:Object, hasAlpha:Boolean = false ):unit
{
if( color is String )
{
var pattern:RegExp = /#/;
color = uint( color.toString().replace( pattern,”0x” ) );
}
else if( !( color is Number ) )
{
color = Number( color );
}
var max:Number = ( hasAlpha ) ? 0xFFFFFFFF : 0xFFFFFF;
return uint( Math.min( Math.max( color, 0 ), max ) );
}
Thanks for posting this! It’s a very useful little utility. And thanks for the followup, Tink, you have a good point and a nice refinement on the original.
Thanks i found this very useful on a project ive been working on!
thanks, great example, just note the return value type of uint, not unit
function fixColorCode( color:Object, hasAlpha:Boolean = false ):uint
If you can trust the passed value to be formatted like this: #F08000
function GetColorValue( ColorCode:String ):Number
{
return Number( “0x”+ColorCode.substring( 1 ) );
}
Or keep it simple:
function convertColor(pValue:String) :String {
var hash:RegExp = new RegExp(“#”);
return pValue.replace(hash, “0x”);
}
trace(convertColor( “#FFCC44″ ));
Thanks for posting this… very helpful. Sidney, your code didn’t work for me
What about something like this
var intColor:int = 0xFFFFFF;
var strColor:String = “#” + intColor.toString(16);