30 March 2009
This article is designed to give you an overview of the samples files. Although templates are provided to simplify the process, you will need to have a basic understanding of ActionScript, Flash components, and working with XML to take full advantage of the resources provided here.
Intermediate
The Adobe AIR runtime has opened up the world of desktop applications to Flash Professional developers. In my own experience I've seen a need for the unique features of AIR when developing applications for e-learning and social networking sites. The challenge in these situations is that we often need a browser, but we don't want the navigation features or open environment of the standard browsers we use from day to day.
To address this challenge, we've developed a series of AIR components for Flash CS4 that can be used to manipulate the AIR ActionScript APIs, and built custom browser prototypes. The components are designed to speed up the development process and introduce the use of XML data sources to aide in creating a standard workflow in Flash Professional.
This article provides an overview of the AIR components extensions and the sample AIRBrowser application developed by Dave Gonzalez and myself (see Figure 1). Along the way you'll review a fully developed AIR application, learn about AIR concepts in Flash CS4, and walk away with the component package and workflow used to develop the application.
Note: Special thanks to our art director Bryan Purse for his design and illustration contributions to the AIR samples project!
The focus of this article is the sample browser application and the process that made it unique to developing it in Flash CS4. Before you dive into the browser sample, it will be helpful to understand the ins and outs of the Flash extensions package used to create the supplied files.
Refer to this page for information on how to navigate the sample files and use the AIR component extensions for your own work.
This section discusses the following topics:
The three files supplied with this article will allow you to install the AIR component extensions into Flash CS4, run simple example files demonstrating the components, and view a full-scale application project built from the extensions.
The following sections provide a quick inventory of what's.
The MXP file installs the AIR components and supporting files into your Flash CS4 application interface. The installation includes:
The component samples include six FLA files demonstrating how the components work. These samples are focused on the basic usage of the components and are easier to reference than the full application sample. The ZIP file includes:
The sample application folder includes a working AIR browser application that implements the AIR components. Beyond being a usable sample as presented, the source files are provided so that you may customize and expand upon the work. The ZIP file includes:
Note: All sample files require Flash CS4 and AIR 1.5 to function properly.
The first thing to do is to install the AIR Component extensions for Flash CS4. The MXP file format works with the Adobe Extension Manager which is automatically installed when you load Flash onto your computer.
Follow these steps to install the extensions:
Note that the editable ActionScript package is installed in the Configuration > Classes folder in your Flash CS4 user settings folder as well.
You can manage and remove the extensions by running the Extension Manager again (Help > Manage Extensions). If you need to disable, update, or remove extensions in Flash CS4, use this route to do so.
To gain full access to the extension features in Flash CS4, you have to do two things; create an AIR FLA file and set its ActionScript classpath to the LocalData path. The easiest way to accomplish this is by using the supplied templates available from the File > New command.
Follow these steps to open a supplied FLA template file:
The FLA template opens with pre-populated content on the Stage and in the Library.
You may also convert any existing FLA into the correct configuration by adjusting its publish settings properties.
Follow these steps to manually configure a FLA file:
You can open the ActionScript package by browsing to your Flash CS4 Configuration folder. The location is different depending on your operating system. The path looks like this on my Windows XP machine:
C:\Documents and Settings\Dan Carr\Local Settings\Application Data\Adobe\Flash CS4\en\Configuration\Classes\com
For more information on configuration folder locations, see the ActionScript Publish Settings documentation.
After your file is configured correctly, you're ready to start working with the components. The workflow is simple; you either open a supplied template where the components are already in the library, or you drag components from the Components panel to the Library panel in your FLA. Once the components are in the Library, you can implement them using ActionScript.
Follow these steps to add a component to your FLA file:
new keyword to create the instance.Tip: If you're using the AIRNativeMenu component, you'll want to set the Stage size to 800 × 620. The layout is designed for an 800 × 600 frame, but the native menu offsets the graphics downward by 20 pixels.
Now that you're up to speed on the layout of the files, take a few minutes to explore the component examples in the AIR_ComponentsSamples.zip file.
Follow these steps to explore the sample files:
At this point you've explored the extensions that compose the core of the sample files. Understanding the components is an important step as they are the building blocks for all the elements in the application. They add consistency in the approach and help to speed the workflow along.
See the AIR components API section for more details on programming with the supplied files.
Next you'll explore the structure of the browser application.
The original idea for the sample project was to create a focused navigation browser for e-learning and social networking applications. Often in e-learning development there is a need to browse to the Internet for content without being able to navigate outside of the intended set of pages. Beyond that, e-learning developers creating SWF content often want to disable all navigation in the browser so that the navigation can exist in the movie in a specialized way.
The AIR browser application is intended to be a proof of concept addressing this topic. This implementation allows the developer to define a fixed set of URLs which the browser may navigate to. The user can navigate anywhere that the target content will allow and can bookmark pages of interest along the way.
The application is intended to show how a browser can be configured with a fixed range of navigation to create focus on a task or a topic. In this case, the sample content is focused on resources for developing with AIR in Flash CS4 Professional. The browser name, theme, and target content can be configured as desired.
This section describes how the browser application works and how you can modify the supplied files to create own version.
This section discusses the following topics:
You can preview the AIR Browser application by running the supplied FLA file in Flash CS4 or by installing the AIR application using the AIRBrowser.air file. To get the full effect the end user will see, start by installing the AIR application.
Follow these steps to explore the project folder:
As you explore the browser interface you'll notice that it implements many of the features that you use in your browser from day to day. The big difference is that the experience is focused on a specific set of content.
The following table provides a quick breakdown of features accessible through the menu.
Table 1. AIR Browser features
| File | Open | Allows you to browse and open an HTML, XML, or SWF file. Shows the type error page if the selected file is an unsupported type. |
|---|---|---|
| Close | Closes the current page and shows the start page. | |
| Prints the page. | ||
| Import | Imports the bookmarks or catalog XML file, adds the items to the menu, and saves the file in the application storage directory. Currently this feature overwrites the existing bookmarks or catalog XML definition. | |
| Export | Exports the bookmarks or catalog XML list to a location on the desktop. | |
| Exit | Closes all windows and exits the application | |
| Bookmarks | Add | Adds the current page to the bookmarks list. |
| Remove | Removes the current page from the bookmarks list (if it exists in the list). | |
| Saved list | Display a list of saved bookmarks (duplicates are allowed). | |
| View | Location | Toggles the visibility of the location bar. |
| Status | Toggles the visibility of the status bar. | |
| Go To List | Submenu (see Go To feature below) | |
| Stop | Stops the current page from loading. | |
| Reload | Reloads the current page. | |
| Full Screen | Toggles full screen mode. | |
| Go To | Back | Navigates backward in the page history. |
| Forward | Navigates forward in the page history. | |
| Home | Navigates to the first page in the catalog list. | |
| URL List | Displays the catalog list of navigable links. | |
| Help | Contents and Index | Displays a popup window containing the help document defined in the settings XML file. |
| About Us | Displays a popup window containing the about us image defined in the settings XML file. |
The AIR_BrowserProject folder contains the files that define the configuration, text localization, and content for the browser. While I'm developing the project, I work with the source files in this folder and use them to publish the AIR installer. The project folder's structure mirrors the structure of the installed application folder.
Follow these steps to explore the project folder:
Note that the root folder structure includes the com ActionScript package, the AIRBrowser.fla file, and all the other source files necessary to publish the AIR file (see Figure 6). If you work with the source files in this way, the FLA file can automatically see the ActionScript package next to it and does not require a special classpath configuration. In this case you simply make sure the FLA file is set to publish to the AIR 1.5 format.
Take a look at the main Timeline and the Library panel. Note that the Timeline doesn't contain any ActionScript code. This is because the application code is defined in an ActionScript class assigned as the document class of the FLA file.
That's it for the source file preview. Next you'll look at how you can modify them.
If you simply want to use the existing browser implementation without coding changes, you can modify a range of files in the app-storage/config folder.
Follow these steps to modify the application configuration files:
<title> node to change the title of the browser at the top of the window.<useTitleOnChrome> node to enable or disable the title in the window chrome.<item> nodes as desired. See the NativeMenu XML Format section for details on formatting.<item> nodes as desired.You can also modify the branding of the browser by changing the skins in the HTML UI components.
Follow these steps to change the branding of browser:
Lastly you can edit the default HTML pages and image content to change the personality of the browser.
Follow these steps to change the default HTML pages and image content:
By editing the files that configure the application you can create a range of looks for the browser matching whatever the needs of your target audience/content are.
After you've made edits to the source files, you need to publish the project into an AIR installer file for distribution.
Note: The file path references to the icons, self-signed certificate, and app-storage items are saved with the absolute paths of the computer I developed the files on. You'll need to reset these paths in the AIR – Application & Installer Settings dialog box before publishing the file again.
Follow these steps to publish the modified project
Tip: You should always use a digital certificate purchased for your business when publishing your application for public use. Using a self-signed certificate is fine for creating sample files and prototyping. For more information on digital signatures, refer to the article Digitally signing Adobe AIR applications or Code signing in Adobe AIR by Oliver Goldman.
Tip: If the process didn't work, it's most likely because there's a problem with the descriptor file or location of one of the included assets. Make sure your icons are PNG images located in a folder in the root of the application directory and make sure the file path to the app-storage folder is correct.
Another approach to using this implementation of the browser is to include the content in the AIR installer so that it gets installed locally along with the application. This might be handy if you're distributing a collection of PDF or web content for offline use.
Follow these steps to publish the local content with the browser:
<item> nodes with updated relative paths to the content in the catalog folder (that is, instead of entering http://www.mysite.com/lesson1/lesson_1.pdf, enter the relative path to a file like app-storage/catalog/lesson1/lesson_1.pdf). Make sure the relative paths will work for the OS of your target audience. Note that you can use the AIR URL schemes to create relative paths to content in the local sandbox; for example, using the prefix app: creates a relative path to the application installation directory.Note: You can also use the AIR installer as a means to update and version installations of the browser application and accompanying content. Creating a routine for updating the installation will be necessary if you need to change the target content over time. For more information on using the AIR application update process, refer to the articles Using the Adobe AIR update framework and Tips for building AIR applications that can be easily updated.
The whole point of working with components is to provide a foundation of reusable building blocks which can be leveraged across different projects. In this case, Dave and I built a series of simple components which form a browser in Flash CS4.
The component set includes the following controls and user interface elements:
| Native OS Controls | HTML UI Controls |
|---|---|
| AIRContextMenu AIRFileManager AIRNativeMenu AIRNativeWindow |
HTMLChrome HTMLFooter HTMLHeader HTMLPane |
This section lists the ActionScript APIs and notes for the eight component files.
All components in the extension package extend MovieClip and therefore inherit the MovieClip API. The component package falls under these general specifications:
Language Version: ActionScript 3.0
Runtime Version: AIR 1.5
In most cases the components accept input and respond with events. The general workflow when using the components is to create a script that initializes data and then responds to events to create a meaningful experience.
The native OS controls provide shortcuts for manipulating the AIR runtime APIs. This functionality is useful as the runtime figures out the correct relative local paths and OS chrome depending on the computer viewing the application. Menus and windows look familiar to users, Mac uses Mac chrome and Windows uses Windows chrome.
The following components are used to manipulate native OS controls.
Package: com.dancarrdesign.utils
Inheritance: AIRContextMenu > AIRNativeMenu > AIRComponent > MovieClip
The AIRContextMenu class provides an XML-driven implementation of a single menu AIRNativeMenu, and applies it to the contextMenu property of any display object.
| Properties | |
|---|---|
|
Read-only. Returns a reference to the base menu item from which all other menus spawn. You can use this reference to access the menus through the standard NativeMenu API. |
|
Read-only. Returns an associative list of NativeMenuItems activated with a checkable state. |
|
Read-only. Returns a list of all menus in the control. |
|
Sets the source of the menus using an XML definition. See the NativeMenu XML Format section below for more information. |
| Methods | |
|
Adds a NativeMenu to another NativeMenu based on an XML definition object. |
|
Adds a NativeMenuItem to a NativeMenu based on an XML definition object. |
|
Returns the NativeMenu object by name. |
|
Toggles the checked state of an item in a menu. |
|
Toggles the enabled state of an item in a menu. |
| Events | |
|
Dispatched when a menu item is selected. Returns an item property with the event object. The item property contains the XML definition of the item. |
Please see the NativeMenu class for more information on the related AIR APIs.
Package: com.dancarrdesign.utils
Inheritance: AIRFileManager > AIRComponent > MovieClip
The AIRFileManager class provides a simple way to read and write XML files to the local file system.
| Properties | |
|---|---|
|
Holds the imported XML data from the last call made to the load method. Use this property to retrieve the data. |
| Methods | |
|
Loads the specified file from a relative path on the local file system. |
|
Closes the window. Relative folder paths are represented using integers in the AIRFileManager. 0 - application storage directory 1 - application directory 2 - desktop directory 3 - documents directory 4 - user directory |
|
Saves the src value to a file in a relative path on the local file system. |
|
Saves the src value to a file located at a supplied absolute path.. |
| Events | |
|
Dispatched when the file finishes loading (only active when the asynchronous mode is turned off. |
Please see the File class for more information.
Package: com.dancarrdesign.utils
Inheritance: AIRNativeMenu > AIRComponent > MovieClip
The AIRNativeMenu class provides an XML-driven implementation of a native OS menu bar.
| Properties | |
|---|---|
|
Read-only. Returns a reference to the base menu item from which all other menus spawn. You can use this reference to access the menus through the standard NativeMenu API. |
|
Read-only. Returns a list of NativeMenuItems activated with a checkable state. |
|
Read-only. Returns a list of all menus in the control. |
|
Sets the source of the menus using an XML definition. See the NativeMenu XML Format section below for more information. |
| Methods | |
|
Adds a NativeMenu to another NativeMenu based on an XML definition object. |
|
Adds a NativeMenuItem to a NativeMenu based on an XML definition object. |
|
Returns the NativeMenu object by name. |
|
Toggles the checked state of an item in a menu. |
|
Toggles the enabled state of an item in a menu. |
| Events | |
|
Dispatched when a menu item is selected. Returns an item property with the event object. The item property contains the XML definition of the item. |
Please see the NativeMenu class for more information on the related AIR APIs.
Package: com.dancarrdesign.utils
Inheritance: AIRNativeWindow > AIRComponent > MovieClip
The AIRNativeWindow class provides a utility for spawning native windows with content loaded by an HTTPLoader or a Loader object.
| Properties | |
|---|---|
|
Sets the window's alignment. Options include; topLeft, topCenter, topRight, middleLeft, middleCenter, middleRight, bottomLeft, bottomMiddle, and bottomRight. Alignment is relative to the screen. |
|
Sets the window's height. |
|
Sets the window's width. |
|
Sets the window's × location on the screen. |
|
Sets the window's Y location on the screen. |
|
Sets the source URL to be loaded into the window. |
|
Sets the title of the window. |
|
Causes the component to either load the source URL using the HTTPLoader (by default) or the Loader object. |
|
Sets the window init options object. See NativeWindowInitOptions documentation for more information. |
| Methods | |
|
Opens the window. Set your window properties before calling this method. |
|
Closes the window. |
|
Causes the window to lay out as specified. |
|
Loads a file using the HTTPLoader in ActionScript. |
|
Loads a file using the Loader object in ActionScript. |
| Events | |
|
Dispatched when the windows finishes loading content. |
Please see the NativeWindow class for more information on the related AIR APIs.
Note: The native OS controls don't contain any graphics. They create their visual representation by manipulating the native OS controls.
The HTML UI controls provide a template for building browser interfaces (see Figure 12). Ultimately they solve a number of challenges when working with the AIR APIs.
Package: com.dancarrdesign.html
Inheritance: HTMLChrome > AIRUIComponent > AIRComponent > MovieClip
The HTMLChrome class creates a scalable frame around the edge of the native window.
| Properties | |
|---|---|
|
Creates an AIRContextMenu for the header when set with the NativeMenu XML Format for context menus. Context menus are activated when a user right-clicks on the object containing the menu. |
|
Inner measurements of the chrome frame. |
|
Inner height of the frame. |
|
Inner width of the frame. |
|
Inner × location of the frame. |
|
Inner Y location of the frame. |
|
Creates a tooltip control which hovers over the object on roll over. |
| Methods | |
|
Sets the size of the frame and resets the bounds measurements. |
Package: com.dancarrdesign.html
Inheritance: HTMLFooter > AIRUIComponent > AIRComponent > MovieClip
The HTMLFooter class creates a status bar at the bottom of the native window.
| Properties | |
|---|---|
|
Creates an AIRContextMenu for the header when set with the NativeMenu XML Format for context menus. Context menus are activated when a user right-clicks on the object containing the menu. |
|
XML settings data containing localized text labels for the status message. |
|
Read-only. Returns the status state. state = 0 // waiting state = 1 // done state = 2 // error |
|
Creates a tooltip control which hovers over the object on roll over. |
| Methods | |
|
Clears the status message. |
|
Sets the size of the status bar. |
|
Sets status message using a localized prefix: state = 0 // waiting state = 1 // done state = 2 // error |
|
Shows or hides the loading animation. |
Package: com.dancarrdesign.html
Inheritance: HTMLHeader > AIRUIComponent > AIRComponent > MovieClip
The HTMLHeader class creates a scalable location bar at the top of the native window.
| Properties | |
|---|---|
|
Creates an AIRContextMenu for the header when set with the NativeMenu XML Format for context menus. Context menus are activated when a user right-clicks on the object containing the menu. |
|
XML settings data containing localized text labels for the tooltips. |
|
Creates a tooltip control which hovers over the object on roll over. |
| Methods | |
|
Sets the enabled state of a button based on button name. Recognized values currently include; back and forward. |
|
Sets the text in the location bar field. |
|
Sets the size of the location bar. |
| Events | |
|
Dispatched when the back button is clicked. |
|
Dispatched when the bookmark button is clicked. |
|
Dispatched when the cancel button is clicked. |
|
Dispatched when the forward button is clicked. |
|
Dispatched when the home button is clicked. |
|
Dispatched when the reload button is clicked. |
Package: com.dancarrdesign.html
Inheritance: HTMLPane> AIRUIComponent > AIRComponent > MovieClip
The HTMLPane class creates a scalable scrollable HTML window.
| Properties | |
|---|---|
|
Creates an AIRContextMenu for the header when set with the NativeMenu XML Format for context menus. Context menus are activated when a user right-clicks on the object containing the menu. |
|
Read-only. Returns a reference to the ComboBox instance in the header. You can use the reference to gain full access to the ComboBox API. |
|
Read-only. Current position in the page history. |
|
Read-only. Total length of the page history. |
|
Read-only. Flag notifying whether a page has loaded yet or not. |
|
Read-only. The URL of the current page in String format. |
|
Loads a new URL into the HTML pane. Used as a simple authortime parameter.* |
|
Sets the timeout limit for the page. If a page request fails to load within this time limit, a timeOut event is dispatched. |
|
Creates a tooltip control which hovers over the object on roll over. |
| Methods | |
|
Cancels the current page from loading. |
|
Returns a step in the page history in HTMLHistoryItem format. |
|
Navigates back in the page history. |
|
Navigates forward in the page history. |
|
Navigates to a specified index in the page history. |
|
Loads a new URL into the HTML pane. |
|
Reloads the current page. |
|
Sets the size of the HTML area. |
| Events | |
|
Dispatched when the bounds of a page changes. |
|
Dispatched when a new page has completed loading. |
|
Dispatched when a new page is requested/ |
|
Dispatched when a page fails to load after the timeoutLimit has been exceeded. |
|
Dispatched when an unhandled JavaScript exception occurs. |
* Note that the HTMLPane can be used in a very simple way as an authortime component. You can add the HTMLPane to the stage, open the Component Inspector panel, and enter a URL into the source field to assign the page to load. The HTMLPane component doesn't contain any navigation features. What you see is what you get, but it is worthy to note that a new user without ActionScript experience can fire up an HTML window in a Flash CS4 AIR file.
Refer to the HTMLLoader class for more information on the related AIR APIs.
Note: You can open the ActionScript package implementing these APIs by browsing to your Flash CS4 Configuration folder or the com folder in the AIR_BrowserProject folder.
The XML format implemented by the AIRNativeMenu and AIRContextMenu mirrors the ActionScript API for the NativeMenuItem object. The components are basically adaptors which parse the XML menu descriptions into the ActionScript API and paint the OS features to the screen.
In addition to managing the XML data source, the components provide a simple event structure where the XML description for each menu node is returned in the event during a selection. This allows for a quick and easy way to interpret menu generated events.
The AIRNativeMenu creates a menu bar at the top of the window chrome (file, edit, view, and so on). The XML structure represents the menu bar by starting with a <menus> root node followed by any number of <menu> nodes. Each menu in the menu bar can have any number of regular items, submenu items, checkable items, disabled items, and separator items.
The following sample shows the XML that generates a simple menu bar:
<menus>
<menu>
<name>file</name>
<label>File</label>
<items>
<item>
<name>file_open</name>
<label>Open</label>
<keyEquivalent>o</keyEquivalent>
<keyEquivalentModifier> CONTROL,COMMAND </keyEquivalentModifier>
</item>
<item>
<isSeparator>1<isSeparator>
</item>
<item>
<name>file_close</name>
<label>Close</label>
<keyEquivalent>w</keyEquivalent>
<keyEquivalentModifier> CONTROL,COMMAND</keyEquivalentModifier>
</item>
</items>
</menu>
<menu>
<name>view</name>
<label>View</label>
<items>
<item>
<name>view_fullScreen</name>
<label>Full Screen</label>
<keyEquivalent>f</ keyEquivalent>
<keyEquivalentModifier> CONTROL,COMMAND </keyEquivalentModifier>
</item>
</items>
</menu>
</menus>
Note that the <menu> nodes contain three elements; name, label, and items. The <name> field is an ID that can be used for manipulating the menu in the AIRNativeMenu instance. The <label> field is the text that appears in the menu bar activator buttons. The <items> field holds a list of NativeMenuItems used to create the drop-down functionality for the menu.
| Property | Comments |
|---|---|
name |
Name or ID of the menu. This value can be used as a key to help identify the node when it's part of a select event. |
label |
The label that appears in the native menu. |
items |
A list of NativeMenuItems described in XML format. |
The <items> node contains a list of any number of <item> nodes. The configuration of the <item> nodes determines what kind of item is displayed in the menu. You basically have three options; regular item, submenu activator item, or separator item.
<item>
<name>file_open</name>
<label>Open</label>
<enabled>1</enabled>
<checked/>
<isSeparator/>
<keyEquivalent>o</keyEquivalent>
<keyEquivalentModifiers>CONTROL,COMMAND</keyEquivalentModifiers>
<menu/>
<data>
<url></url>
</data>
</item>
The <item> field contains nine properties which you can use to configure the state of each menu item.
| Property | Comments |
|---|---|
name |
Name or ID of the menu. This value can be used as a key to help identify the node when it's part of a select event. |
label |
The label that appears in the native menu. |
checked |
Setting the <checked> field to 1 shows a check on the menu item. Setting the item to 0 activates the item as a being checkable, but doesn't show a check. Leaving this field empty disables the check feature for the item. |
isSeparator |
Set the <isSeparator> field to 1 to activate the item as a separator line. In this case, all other values are ignored. |
keyEquivalent |
Set the Note: AIR 1.5 supports single-digit |
keyEquivalentModifier |
Set the <keyEquivalentModifer> field to a comma-separated list containing any combination of COMMAND, CONTROL, or ALTERNATE to associate the related modifier with the label and hotkey. (Note that the key features are purely for visual effect in the menu. You have to assign a KeyboardEvent listener to the stage to activate keyboard-driven shortcuts in the application. |
menu |
Set this field to the <menu> XML format to nest a submenu as a menu item. |
data |
Enter any data which you like in the <data> field. You can retrieve this data when you catch the select event from the menu. The sample file currently uses the data field to store a URL value for bookmark and catalog items. |
The <name> and <label> fields are required, but you can use the other fields as needed.
The AIRContextMenu creates a context menu when you right-click on an item. A context menu is basically the same as a native menu except that there is only one menu appearing from an anchor point (click). Note that each AIRUIComponent subclass in the package contains a contextMenuSource property which accepts the XML format and creates a context menu on the object.
The XML format for a context is the same as the <items> field in the native menu format:
<items>
<item>
<name>open</name>
<label>Open</label>
<keyEquivalent>o</keyEquivalent>
<keyEquivalentModifier>CONTROL,COMMAND </keyEquivalentModifier>
</item>
<item>
<isSeparator>1<isSeparator>
</item>
<item>
<name>close</name>
<label>Close</label>
<keyEquivalent>w</keyEquivalent>
<keyEquivalentModifier>CONTROL,COMMAND </keyEquivalentModifier>
</item>
</items>
Note: The keyboard modifiers represented in the XML format are visually rendered in the native menu, but the Keyboard listeners have to be built separately in ActionScript.
This set of samples demonstrates the possibilities of combining the Flash component workflow with the AIR ActionScript APIs. Although the AIR components are powerful, they provide foundation-level functionality for each feature. Our goal was to create a workflow for quickly prototyping AIR interfaces in Flash Professional. The next logical step will be to expand upon this foundation with new features and flexibility within the code package.
Spend some time exploring the code package that generates the component features and try to add some of your own ideas.
Here are some other resources you may find useful:

This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License
| 04/11/2012 | Surround sound 5.1 with Air 3.2 on desktop app? |
|---|---|
| 12/12/2011 | Live Streaming H.264 Video on iOS using AIR |
| 04/17/2012 | HTMLLoader - Google Maps? |
| 04/12/2012 | Tabindex in forms on mobile? |