Flex Release Notes

Flex 1.5 Release Notes

The Macromedia Flex 1.5 includes new functionality, performance and reliability improvements, enhanced documentation, and more.

This document includes the following sections:

For instructions on installing Flex 1.5, see the Flex 1.5 Installation Instructions.

Important: Uninstall Flex 1.5 Beta or GMC

The Flex 1.5 installer does not support installing over a Beta or GMC version of Flex 1.5. You must uninstall any previous installation of the Flex 1.5 Beta of Flex 1.5 GMC before you install the release version of Flex. If you have Flex 1.5 Beta or Flex 1.5 GMC installed and you attempt to install into the same location, the installer prompts you to enter a different location.

What's new

The following list describes some of the major new features and changes for Flex 1.5. See the Flex Developer Center more information on new features.

  • Programmatic skinning — Flex now includes sample skin files for programmatic and graphical skinning. To change the appearance of controls that use programmatic skins, you edit an ActionScript class file, compile that file as a SWC file, and then deploy that SWC file as a theme with your Flex application. For graphical skinning, you edit a FLA file and export it as a SWC file from the Macromedia Flash MX 2004 environment.
  • Charts — Flex includes a rich set of charting controls. Flex charts work with the DataProvider API for fast and easy data visualization.
  • Runtime shared libraries — You can now create runtime shared libraries, which let you externalize assets for use across different applications.
  • SOAP — Flex no longer supports SOAP encoding on the <mx:RemoteObject> tag.
  • Custom authentication — Flex now supports custom authentication of the <mx:RemoteObject> tag with AMF..
  • HorizontalList and TileList controls — Flex includes controls that let you display horizontal and tiled lists of items.
  • SWC compiler — Flex now includes compc, a command-line utility that compiles SWC files from your MXML source. You can distribute SWC files as components or use them as runtime shared libraries.
  • Support for percent height/width — Flex containers and controls now support setting height and width properties to percentage values in addition to absolute pixel values.
  • Improved layout performance — Flex 1.5 simplifies the process of using deferred instantiation to improve layout performance.
  • New style properties — Flex includes new style properties that allow for more advanced customization of common controls.

Each of these enhancements is discussed in Developing Flex Applications.

In addition to the previous list, Flex 1.5 includes the following minor enhancements:

  • Style performance
  • Debugger performance
  • Smoother effects
  • DataGrid component performance when resizing
  • RemoteObject performance
  • Bug fixes and enhancements to Macromedia Flash Debug Player
  • New VerticalList features, including text wrap and variable row height
  • Improved support for programmatic skinning
  • Currency validator
  • New sample application (PhotoViewer)
  • Support for IBM AIX 5.2 with WebSphere 5 and Oracle 10g AS
  • Code samples in Flex ActionScript and MXML API Reference

Compatibility issues

Changes to Flex 1.5 can cause applications written for Flex 1.0 with Updater 2 to behave differently. Changes to Flex 1.5 include the following:

  • Features modified in Flex 1.5
  • Features removed from Flex 1.5
  • Features deprecated from Flex 1.5

Deprecated features and properties will do the following:

  • Generate compilation warnings
  • Continue to work in Flex 1.5
  • Be removed from the product in a future major release

You can suppress deprecation warnings by setting show-deprecated-warnings to false in flex-config.xml.

See the Flex 1.5 Migration Guide for a list of all compatibility issues, and information on how to modify your application to handle these issues.

Known issues

The following list describes known issues in Flex 1.5:

73758 CSS type selectors in two MXML components override each other. Flex honors the styles set by the last-instantiated component.

73929 Opera 7.11 Browser does not support MXML files when JavaScript is disabled.

74581 Changing the colSpan or rowSpan properties of a GridItem inside a Grid control at runtime does not cause a layout change. To work around this issue, call the invalidateLayout() method of the Grid; for example:


75839 If you stop a debugging session, and then restart the debugger, you must also close your Microsoft Internet Explorer window and reopen it. To work around this issue, select the Reuse Windows for Launching Shortcuts option in Internet Explorer.

79445 When you dynamically download SWF files, the loading file has to be in the same directory as the file that is being loaded, or you must use absolute path names.

79449 You must define all cursors in the top-level application file, but you can put the code that changes the cursor anywhere in the application. If two applications are running at the same time, the last cursor change takes effect for both applications.

79925 Data binding does not work with a SharedLocalObject. To work around this issue, write a wrapper object that uses a SharedLocalObject internally, but has getters and setters that the rest of your application can use. You then declare and dispatch the appropriate events to update the SharedLocalObject.

81132 The TabBar container does not respond to Page Up, Page Down, Home, and End keys.

82041 Flex displays a blank SWF file when you request an MXML file that contains errors using the .swf filename extension. For example, if myFile.mxml has errors, but you request it with http://baseurl/myFile.mxml.swf, Flex displays a blank page in the browser. Flex writes compilation errors in the system log regardless of how you requested the file.

85026 Flex cannot process a non-UTF-8 or non-ISO-8859-1 encoded XML file by using the <mx:HTTPService> tag.

86767 When you use the fdb command-line debugger, if fdb opens an MXML file that contains other MXML files, refreshing the browser might stop the application. To work around this issue, debug the MXML files individually.

86832 Flex applications in Netscape Navigator 4.8 appear at a small size (50 x 50 pixels). To avoid this issue, explicitly set the application's height and width properties.

87024 You cannot dynamically change the layout direction of a Box container if you set an explicit height and width for the container.

87038 On Opera, Safari, Netscape, Mozilla, and Firefox browsers, adding a URL parameter after ?versionChecked=true or ?versionChecked=false causes the browser to continuously try to open new browser windows.

87109 The Array.push() method sometimes fails to provide the data for a dataProvider of data-driven components, such as the ComboBox control. To avoid this issue, use the addItem() method.

87316 Disabling Flash Player detection in the flex-config.xml file does not affect Microsoft Internet Explorer.

87317 When defining a service in the flex-config.xml file, Flex does not enforce the value of the <allow-unnamed-access> tag when you use {context.root} as part of the service's endpoint URL; for example:

<service name="SampleSalaryWS">

If your unnamed whitelist allows this service, you can still access the service's WSDL URL with the flashproxy by using a URL similar to the following:


To work around this issue, specify WSDL and endpoint URLs in the service definition rather than use the {context.root}.

10014 Flex is now stricter in parameter validation for web service calls to comply with WSDL declarations. Therefore, if a method parameter is defined in the WSDL as being required, Flex now throws an error if it is not provided. In previous releases, Flex made the method call without this parameter check.

102646 If you tab to a Button control, and its click event handler disables the Button control, although the Button control is disabled it still has focus and the spacebar continues to fire its click event. To work around this issue, you can add a setFocus() call to the event handler to change focus to a different control.

102934 The ColumnChart control's vertical axis displays -2.77555756156289e-16 at origin rather than 0. To work around this issue, use the following code to set the labelFunction property on the AxisRenderer:

        <mx:AxisRenderer labelFunction="labelFunc" />

    <!-- Some more stuff here. -->

    function labelFunc(val) {
        return Math.round(Number(val) * 100)/100;

103110 On a WebSphere server, after you authenticate a RemoteObject request using custom authentication, you have to reauthenticate for subsequent requests that are configured to use basic authentication.

103309 When a popup window contains a ControlBar container, the layout in the main application can appear incorrect. To avoid this issue, open the popup window as late as possible in the creation cycle of the application. For example, open the popup window from within the event handler of the Application container's creationComplete event. If that is not sufficient, open the popup window from the event handler of a child component's creationComplete event.

103375 In Microsoft Internet Explorer, appending a URL parameter other than recompile=true in a request to an MXML file suppresses warnings in the HTML output.

103870 The Flex UNIX installers use a bundled version of the Sun 1.4.2 JVM. If you need to use a different JVM, use the command line parameter LAX_VM to specify the Java executable file to use instead of the bundled one, as the following example shows:

./Flex-15-lin.bin LAX_VM /$JAVA_HOME/bin/java

104263 You must stop the integrated JRun server before attempting an uninstall the integrated version of Flex.

104458 If you use the Loader control to load an MXML file that contains charts, it can cause the label rotation for labels in an AxisRenderer to render incorrectly.

104495 On a WebLogic server, when redeploying a Flex application using auto-deployment, the user may notice exceptions in the server logs as WebLogic attempts to deserialize the application context. You can ignore these exceptions because Flex recreates the necessary objects when the application is restarted.

104625 The id of a component and a package name referenced in the application should not be the same. For example, the following code produces a compiler error:

<mx:Application xmlns:mx="">
    <x:MyPanel xmlns:x="inner.*"/>
    <mx:Button id="inner" label="App Button"/>

104691 If you set the themeColor property at runtime, it does not propagate to all child Menu controls of a MenuBar control. To work around this issue, set the themeColor property at compile time.

104813 You should not use the chart controls with the <mx:Repeater> tag.

105420RSL compilation fails when an RSL descriptor file (.sws file) references a component that contains the tag <mx:WebService>, <mx:RemoteObject>, or <mx:HTTPService>. To work around this issue:

  1. Compile the component that contains the tag <mx:WebService>, <mx:RemoteObject>, or <mx:HTTPService> using compc to create a SWC file.
  2. Put the compiled SWC file in a folder that is specified in the <lib-path> tag in the flex-config.xml file (for example the user_classes directory).
  3. Remove the component source code file from the compiler path (That is, remove or rename the component source code file so that it is not compiled when the application is compiled).

Now, RSL compilation uses the compiled SWC file instead of the component source file and no errors occur.

105546 Flex incorrectly deserializes an empty array element from a web service result or HTTP service result that is typed as a string as a String object. You can work around this issue by calling the following function from your result handler and passing in the event.result object:

function fixArrayResults(results) {
	for(var i=0; i<results.length; i++) {
		if (results[i].toString()=="" && results[i] instanceof String)

105758 When using Flex with Macromedia Central, you may get a type mismatch error when you call the mx.central.encryption.MD5.encode() function. To work around this issue, add a file named to the WEB-INF\flex\system_classes directory, with the following content:

intrinsic class MD5 {
 static function encode(messageString:String):String;

You can then call the mx.central.encryption.MD5.encode() function from the global namespace, as the following example shows:

var digest:String = MD5.encode(userID);

Flex Builder compatibility

Flex Builder 1.0 does not support the new features of Flex 1.5, but you can still use it successfully with Flex 1.5. Flex Builder 1.0 does not give code hinting or design view representations of new 1.5 features, such as charts, TileList, HorizontalList, or percentage width and height. You can still use Flex Builder 1.0 as your editor to do tasks such as opening and editing any MXML or ActionScript file, running and debugging in the embedded browser, using the Network Monitor, and seeing build errors in the Output panel. Update Components and Package Component do work for Flex components built for Flex 1.0, but may not work for Flex components built for Flex 1.5. Macromedia will release a Beta of Flex Builder that will add support for the new Flex 1.5 features, but for now you can continue to use Flex Builder 1.0.

Late breaking news

This section contains additions to the Flex documentation that occurred after the documentation went to press.

XML deserialization for HTTP services and web services now respects data type

XML deserialization for HTTP services and web services now respects data type. In Flex 1.0, Flex translated numbers and "true" or "false" into strings. In Flex 1.5, any number with a non-zero first digit is turned into a number and "true" and "false" are turned into boolean values.

For an example, see Migrating Flex Applications.

Remote object services support by-reference serialization

For remote object services, you can use a special reference type that lets data point to commonly occurring complex objects that have already been serialized instead of reserializing them over and over again.

For more information, see Migrating Flex Applications.

DataGrid enhancements

This section describes new DataGrid functionality that is not in Developing Flex Applications.

The DataGrid class now has a sortCompareFunction property for custom sorting of items in DataGrid columns. This property is a pointer to a callback function that gets called when the user clicks a column header to sort the contents of the DataGrid. The underlying dataProvider calls this function multiple times in order to sort the elements of the dataProvider. The following is the function signature of the callback function:

mySortCompareFunction(obj1 : Object, obj2 : Object, columnIndex : Number) : Number

obj1 - A data element to compare.
obj2 - Another data element to compare with obj1.
columnIndex - The zero-based index of the column number that is being sorted.

The function should return a value based on the comparison of the objects:
-1 if obj1 should appear before obj2 in the sorted sequence.
0 if obj1 = obj2.
1 if obj1 should appear after obj2 in the sorted sequence.

In the DataGrid in the following MXML example, the sortCompareFunction property is set to a function called sortGrid:

<?xml version="1.0"?>
<mx:Application xmlns:mx="" width="850" height="800"> <mx:Script> <![CDATA[ var phoneData = [ {Name:"Bob", Department:"Sales", Extension:"x2345", Pay:"$32000"}, {Name:"Sue", Department:"Marketing", Extension:"x5432", Pay:"$38000"}, {Name:"Fred", Department:"Engineering", Extension:"x1122", Pay:"$52000"}, {Name:"Betty", Department:"Sales", Extension:"x8854", Pay:"$36000"}, {Name:"Steve", Department:"Marketing", Extension:"x2389", Pay:"$42000"}, {Name:"Marsha", Department:"Engineering", Extension:"x9964", Pay:"$65000"} ]; function sortGrid(a, b, index) { var result; var field; // Can access the column name from directly from the DataGrid /* var field = sampleGrid.columns[index].columnName; var i1 = a[field]; var i2 = b[field]; */ // Or can get the column name from the dataProvider array. switch (index) { case 0: field = "Name"; var i1 = a[field]; var i2 = b[field]; break; case 1: field = "Department"; var i1 = a[field]; var i2 = b[field]; break; case 2: // Ignore the 'x' at the beginning field = "Extension"; var i1 = a[field].slice(1); var i2 = b[field].slice(1); break; case 3: // Ignore the $ at the beginning field = "Pay"; var i1 = a[field].slice(1); var i2 = b[field].slice(1); break; } // You can do any type of comparison here. For now, we do just a simple comparison. // For example you could do a special comparison for the extension field. var i1 = Number(a.slice(1)); var i2 = Number(b.slice(1)); if (i1 == i2) result = 0; else if (i1 < i2) result = -1; else result = 1; return result; } ]]> </mx:Script> <mx:DataGrid id="sampleGrid" width="400" height="200" dataProvider="{phoneData}" > <mx:columns> <mx:Array> <mx:DataGridColumn columnName="Name" headerText="Sales Rep" /> <mx:DataGridColumn columnName="Department" headerText="Dept" textAlign="center"/> <mx:DataGridColumn columnName="Extension" headerText="Ext" textAlign="right" sortCompareFunction="sortGrid" /> <mx:DataGridColumn columnName="Pay" headerText="Pay" textAlign="right" /> </mx:Array> </mx:columns> </mx:DataGrid> </mx:Application>

Getting Started


Application Development








Community Resources