Skinning the Flash MX 2004 Components article published on DevNet

I’ve been too busy to Blog this earlier, but an article I wrote introducing methods of skinning Flash MX 2004 components was published on DevNet. In the article I detail different basic methods of skinning components that involve both using the library or code as well as discuss that pluses and minuses of each. I know there has been a lot of discussion and interest on the subject and hope you find this article helpful.

You can find the article here

Correcting Alert component size for embedded fonts

The Alert component sizes itself based on content and doesn’t respond to setSize calls. However, the sizing doesn’t take embedded fonts into account and cuts off text when using embedded fonts.

To fix this bug we need to add two lines, one to mx.controls.alertClasses.AlertForm and another to mx.core.ext.UIObjectExtensions.

First in mx.controls.alertClasses.AlertForm find the getSize() function and add this line right before all of the current textMeasure_mc references.

textMeasure_mc.embedFonts = tf["embedFonts"];

Then in mx.core.ext.UIObjectExtensions find the TextFormat.prototype.getTextExtent2 mixin and add this line right after (and outside) the if statement.

_root._getTextExtent.embedFonts = this["embedFonts"];

If this bug is affecting you, you can choose to either make these changes directly to the core classes or create a local copy of the classes and change those, with a reference to them in each FLA’s classpath.

Example code for a custom Defaults class

One of the additions to the Flash MX 2004 documentation that’s new with the 7.2 update is information and a list of steps on how to create a custom theme Defaults class. This is important when creating a new theme and you want to set the defaults for many components, as opposed to just a few style settings.

The complication with Defaults is that it has a reference from FocusRect so you need to provide both the Defaults class and the FocusRect class.

Download the example classes and FLA.

The example includes the two classes, Defaults and FocusRect, along with a FLA that has one component in it to demonstrate that the custom theme is being used.

The custom theme only makes the window title red, and thus could have been easier implemented using setStyle, but it’s meant as an example of creating a custom Defaults class and thus serves that purpose.