What Open Source Flash (AS2) projects are there?

We’d like to take a survey to see what open-source Flash projects exist. Can people involved in open-source projects post a comment here or e-mail us? Information we need is the URL, whether it has anonymous (read-only) CVS access, approximately how large the project is (number of lines) and approximately how many different packages it contains.

We want to make sure open-source projects can take advantage of BLDoc to meet their documentation needs.

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.

Using ASnative in AS2

We had a need to use ASnative in a real application today for the first time. To our surprise, the first time we compiled we received this error message:

**Error** C:\CVSA\source\view\controls\DraggableTreeRow.as:
Line 99: There is no method with the name 'ASnative'.
           if (ASnative(800, 2)(1)!=1) {

Total ActionScript Errors: 1 	 Reported Errors: 1

Turns out ASnative isn’t in toplevel.as, so it’s not recognized by the compiler as a valid function. This gave us two options: adding it to toplevel.as or calling it dynamically.

Adding it to toplevel.as makes the code less portable because all machines that compile the application need to have this modification. Instead, we opted for dynamic invocation, as in the following example.

if (["ASnative"](800, 2)(1)!=1) {
stopRowDrag();
}

Enjoy!

For more information on ASnative see this entry on the Flashcoders Wiki.

(btw, I’ll post on why I’m using it later)