You are previewing Adobe® Flex® 3 Bible.
O'Reilly logo
Adobe® Flex® 3 Bible

Book Description

Flex your development muscles with this hefty guide

Write programs using familiar workflows, deliver rich applications for Web or desktop, and integrate with a variety of application servers using ColdFusion, PHP, and others-all with the new Flex Builder 3 toolkit and the comprehensive tutorials in this packed reference. You'll learn the basics of Flex 3, then quickly start using MXML, ActionScript, CSS, and other tools to create applications that can run on any browser or operating system.

  • Install and learn how to use Flex Builder 3

  • Explore MXML, ActionScript 3, and the anatomy of a Flex application

  • Lay out Flex controls and containers, and use Cascading Style Sheets (CSS) to create look and feel

  • Incorporate Advanced List controls, Flex charting components, and data entry forms

  • Integrate your Flex applications with a variety of application servers

  • Create cross-operating system desktop applications with Adobe Integrated Runtime (AIR)

Companion Web Site Visit www.wiley.com/go/flex3 to access code files for the projects in the book.

Table of Contents

  1. Copyright
  2. About the Author
  3. Credits
  4. Preface
  5. Acknowledgments
  6. I. Flex Fundamentals
    1. 1. About Flex 3
      1. 1.1. Learning the Fundamentals of Flex
        1. 1.1.1. Getting to know Flex applications
        2. 1.1.2. Flex versus Flash development
        3. 1.1.3. Flex and Object-Oriented Programming
      2. 1.2. Understanding the Flash Player
        1. 1.2.1. Learning a little history about the Flash Player
        2. 1.2.2. Flash Player penetration statistics
        3. 1.2.3. The Debug Flash Player
        4. 1.2.4. Flash Player installation
        5. 1.2.5. Flex 3 development tools
      3. 1.3. Getting Help
      4. 1.4. Summary
    2. 2. Using Flex Builder 3
      1. 2.1. Getting Flex Builder 3
      2. 2.2. Installing Flex Builder 3
        1. 2.2.1. Installing Flex Builder with the standalone configuration
        2. 2.2.2. Installing Flex Builder with the Eclipse workbench
      3. 2.3. Getting to Know the Eclipse Features
        1. 2.3.1. The Eclipse workspace
        2. 2.3.2. Configuring Eclipse
      4. 2.4. Touring the Flex Builder Interface
        1. 2.4.1. Creating Flex projects
        2. 2.4.2. The Flex Builder user interface
      5. 2.5. Getting Help
        1. 2.5.1. Exploring the Help contents
        2. 2.5.2. Searching for Help terms
        3. 2.5.3. Using Dynamic Help
      6. 2.6. Searching for Code
        1. 2.6.1. Using Eclipse search tools
        2. 2.6.2. Using Flex Builder code model search tools
      7. 2.7. Summary
    3. 3. Building a Basic Flex Application
      1. 3.1. Creating a "Hello World" Application
        1. 3.1.1. Switching workspaces
        2. 3.1.2. Creating the project
        3. 3.1.3. Saying hello
      2. 3.2. Understanding the html-template Folder
        1. 3.2.1. HTML template files
      3. 3.3. Deploying the Application
        1. 3.3.1. Creating the release version
        2. 3.3.2. Testing the release version
        3. 3.3.3. Deploying the release version
        4. 3.3.4. Integrating an application into an existing Web page
        5. 3.3.5. Integrating Flex applications with Dreamweaver CS3
      4. 3.4. Summary
    4. 4. Understanding the Anatomy of a Flex Application
      1. 4.1. MXML and ActionScript 3
      2. 4.2. Understanding MXML
        1. 4.2.1. MXML is XML!
        2. 4.2.2. MXML and containership
        3. 4.2.3. MXML and non-visual classes
      3. 4.3. Understanding ActionScript 3
        1. 4.3.1. ActionScript syntax
        2. 4.3.2. Declaring variables
        3. 4.3.3. Conditional statements
        4. 4.3.4. Looping
      4. 4.4. Combining MXML and ActionScript
        1. 4.4.1. The <mx:Script> tag
        2. 4.4.2. Using external ActionScript files
        3. 4.4.3. Managing ActionScript code with Flex Builder
      5. 4.5. Using the Application Container
        1. 4.5.1. Passing application parameters
        2. 4.5.2. Controlling application dimensions
        3. 4.5.3. Setting the layout property
      6. 4.6. Summary
    5. 5. Using Bindings and Components
      1. 5.1. Using Binding Expressions
        1. 5.1.1. Shorthand MXML binding expressions
        2. 5.1.2. Using <mx:Binding>
        3. 5.1.3. Making expressions bindable
      2. 5.2. Using MXML Components
        1. 5.2.1. Creating MXML components
        2. 5.2.2. Instantiating MXML components
      3. 5.3. Adding Properties and Methods to Components
        1. 5.3.1. Component properties
        2. 5.3.2. Component methods
      4. 5.4. Using Component Libraries
        1. 5.4.1. Creating component libraries
        2. 5.4.2. Incorporating component libraries
      5. 5.5. Summary
    6. 6. Debugging Flex Applications
      1. 6.1. Debugging Basics
        1. 6.1.1. The debug version of the application
        2. 6.1.2. Running an application in debug mode
      2. 6.2. Using trace() and the Logging API
        1. 6.2.1. Using the trace() function
        2. 6.2.2. Using the Logging API
      3. 6.3. Using Breakpoints
        1. 6.3.1. Setting and clearing breakpoints
        2. 6.3.2. Setting and removing breakpoints in an MXML or ActionScript editor
        3. 6.3.3. Using the Breakpoints view
        4. 6.3.4. Using breakpoints in a debugging session
        5. 6.3.5. Inspecting variables and expressions
        6. 6.3.6. Controlling application execution with the Debug view
      4. 6.4. Profiling Flex Applications
      5. 6.5. Summary
    7. 7. Working with Events
      1. 7.1. The Flex Event Architecture
      2. 7.2. Handling Events in MXML
        1. 7.2.1. Creating event handlers in MXML
        2. 7.2.2. Working with event objects
      3. 7.3. Handling Events with addEventListener()
        1. 7.3.1. Setting up an event listener
        2. 7.3.2. Using event name constants
        3. 7.3.3. Removing an event listener
      4. 7.4. Using Event Bubbling
      5. 7.5. Using Custom Events
        1. 7.5.1. Declaring custom events
        2. 7.5.2. Dispatching custom events
        3. 7.5.3. Handling custom events
      6. 7.6. Using Custom Event Classes
        1. 7.6.1. Creating the ActionScript class
        2. 7.6.2. Overriding the clone() method
        3. 7.6.3. Dispatching a custom event class
        4. 7.6.4. Handling a custom event class
      7. 7.7. Summary
  7. II. The Flex Class Library
    1. 8. Using Flex Controls
      1. 8.1. Instantiating and Customizing Controls
        1. 8.1.1. Instantiating controls with MXML and Action Script
        2. 8.1.2. Setting control properties and styles
        3. 8.1.3. Understanding the UIComponent class
      2. 8.2. Using Text Controls
        1. 8.2.1. Common properties of text controls
        2. 8.2.2. Text display controls
        3. 8.2.3. Text entry controls
      3. 8.3. Using Layout Controls
        1. 8.3.1. HRule and VRule
        2. 8.3.2. The Spacer control
      4. 8.4. Using Button Controls
        1. 8.4.1. The Button control
        2. 8.4.2. The LinkButton control
        3. 8.4.3. The CheckBox control
        4. 8.4.4. Using RadioButton controls
      5. 8.5. Other Data Entry Controls
        1. 8.5.1. The NumericStepper control
        2. 8.5.2. Date controls
      6. 8.6. Using Interactive Controls
        1. 8.6.1. The ScrollBar controls
        2. 8.6.2. The Slider controls
      7. 8.7. Working with Images
        1. 8.7.1. Using the Image control
        2. 8.7.2. Resizing images
        3. 8.7.3. Embedding images
        4. 8.7.4. Changing images at runtime
      8. 8.8. Summary
    2. 9. Using Layout Containers
      1. 9.1. Using Simple Box Containers
        1. 9.1.1. Using vertical and horizontal layout containers
        2. 9.1.2. Using the Canvas container
        3. 9.1.3. Using container styles
      2. 9.2. Using the Panel Container
        1. 9.2.1. Panel properties
        2. 9.2.2. Panel styles
        3. 9.2.3. The ControlBar container
      3. 9.3. Using Constraint-Based Layout
        1. 9.3.1. Positioning components in Design view
        2. 9.3.2. Using constraint properties
      4. 9.4. Sizing Containers and Controls
        1. 9.4.1. Content-based sizing
        2. 9.4.2. Absolute sizing
        3. 9.4.3. Percentage sizing
        4. 9.4.4. Constraint-based sizing
      5. 9.5. Using Advanced Constraints
        1. 9.5.1. Declaring constraint rows and columns
        2. 9.5.2. Placing and sizing components with advanced constraints
      6. 9.6. Summary
    3. 10. Using Cascading Style Sheets
      1. 10.1. About Cascading Style Sheets
      2. 10.2. What Is a Style Sheet?
      3. 10.3. Using Inline Style Declarations
      4. 10.4. Using Style Selectors
        1. 10.4.1. Using type selectors
        2. 10.4.2. Using style name selectors
        3. 10.4.3. Using the global selector
        4. 10.4.4. Using embedded style sheets
        5. 10.4.5. Using external style sheets
      5. 10.5. Using Compiled Style Sheets
        1. 10.5.1. Compiling style sheets
        2. 10.5.2. Loading compiled style sheets
      6. 10.6. Controlling Styles with ActionScript
        1. 10.6.1. Setting and getting style information
        2. 10.6.2. Modifying style selectors at runtime
      7. 10.7. Graphical Skinning of Visual Components
        1. 10.7.1. Creating graphical skins
        2. 10.7.2. Using bitmap graphics as skins
        3. 10.7.3. Creating vector-based skins in Flash CS3
        4. 10.7.4. Declaring Flash-based skins
        5. 10.7.5. Importing skin artwork
      8. 10.8. Summary
    4. 11. Working with Text
      1. 11.1. Controlling Fonts with Cascading Style Sheets
      2. 11.2. Selecting Fonts
        1. 11.2.1. Using device fonts
        2. 11.2.2. Using embedded fonts
      3. 11.3. Manipulating Embedded Fonts
        1. 11.3.1. Rotating fonts
        2. 11.3.2. Using advanced anti-aliasing
      4. 11.4. Formatting Text Values
        1. 11.4.1. Creating formatter objects
        2. 11.4.2. Setting formatter properties
        3. 11.4.3. Using formatters in binding expressions
        4. 11.4.4. Using formatters in static methods
      5. 11.5. Summary
    5. 12. Managing Application Navigation
      1. 12.1. Classic Web Navigation Navigation
      2. 12.2. Understanding Flex Navigation
      3. 12.3. Using Navigator Containers
        1. 12.3.1. Declaring a ViewStack in MXML
        2. 12.3.2. Using custom components in a navigator container
        3. 12.3.3. Creating a ViewStack in Design view
        4. 12.3.4. Working with navigator containers in ActionScript
        5. 12.3.5. Managing creation policy
        6. 12.3.6. Managing navigator container dimensions
      4. 12.4. Using Navigator Bar Containers
        1. 12.4.1. Using an Array as a dataProvider
        2. 12.4.2. Handling navigator bar events
        3. 12.4.3. Using a ViewStack as a dataProvider
        4. 12.4.4. Managing navigator bar presentation
      5. 12.5. Using Menu Controls
        1. 12.5.1. Menu data providers
        2. 12.5.2. Handling menu events
        3. 12.5.3. Using the Menu control
        4. 12.5.4. Using the MenuBar control
      6. 12.6. Using Other Navigator Containers
        1. 12.6.1. The TabNavigator container
        2. 12.6.2. The Accordion container
        3. 12.6.3. TabNavigator and Accordion keyboard shortcuts
      7. 12.7. Summary
    6. 13. Working with Pop-up Windows
      1. 13.1. Using the Alert Class
        1. 13.1.1. Presenting pop-up windows with Alert.show()
        2. 13.1.2. Controlling Alert window modality
        3. 13.1.3. Managing Alert window buttons
        4. 13.1.4. Handling Alert window events
        5. 13.1.5. Using a custom graphical icon
        6. 13.1.6. Using CSS selectors with the Alert class
      2. 13.2. Using the PopUpMenuButton Control
        1. 13.2.1. Creating a data provider
        2. 13.2.2. Handling events
      3. 13.3. Using the PopUpButton control
        1. 13.3.1. Declaring the pop-up window
        2. 13.3.2. Handling events and managing pop-up behaviour
      4. 13.4. Working with Custom Pop-up Windows
        1. 13.4.1. Defining a custom pop-up window
        2. 13.4.2. Using the PopUpManager class
        3. 13.4.3. Using the TitleWindow container
      5. 13.5. Summary
    7. 14. Controlling Animation
      1. 14.1. Using Effects
        1. 14.1.1. Using effect classes
        2. 14.1.2. Modifying effect class properties
        3. 14.1.3. Using behaviors and triggers
        4. 14.1.4. Playing effects in ActionScript
        5. 14.1.5. Using tweening and masking effects
        6. 14.1.6. Using composite effects
        7. 14.1.7. Using easing functions
      2. 14.2. Using Drag-and-Drop Operations
        1. 14.2.1. Implementing drag-and-drop with List controls
        2. 14.2.2. Implementing custom drag-and-drop operations
      3. 14.3. Summary
    8. 15. Managing View States
      1. 15.1. Understanding View States
      2. 15.2. Defining View States in Design View
        1. 15.2.1. Creating a new state
        2. 15.2.2. Defining a view state's overrides
      3. 15.3. Switching View States at Runtime
      4. 15.4. Declaring View States in MXML
        1. 15.4.1. Adding components
        2. 15.4.2. Removing components
        3. 15.4.3. Overriding properties and styles
        4. 15.4.4. Overriding event handlers
      5. 15.5. Declaring View States with ActionScript
        1. 15.5.1. Setting override properties
        2. 15.5.2. Overriding event handlers
      6. 15.6. Managing View States in Components
      7. 15.7. Using Transitions
        1. 15.7.1. Declaring a transition
        2. 15.7.2. Using Parallel and Sequence effects in transitions
      8. 15.8. Summary
  8. III. Working with Data
    1. 16. Modeling and Managing Data
      1. 16.1. Creating a Data Model
        1. 16.1.1. Using the <mx:Model> tag
      2. 16.2. Using Value Objects
        1. 16.2.1. Using the New ActionScript Class wizard
        2. 16.2.2. Value object class syntax
        3. 16.2.3. Instantiating value object classes
      3. 16.3. Using Data Collections
        1. 16.3.1. Declaring an ArrayCollection
        2. 16.3.2. Setting an ArrayCollection object's source property
        3. 16.3.3. Accessing data at runtime
        4. 16.3.4. Managing data at runtime
        5. 16.3.5. Using data cursors
      4. 16.4. Summary
    2. 17. Using list controls
      1. 17.1. Using Data Providers
        1. 17.1.1. Using hard-coded data providers
        2. 17.1.2. Using dynamic data providers
      2. 17.2. Controlling List Item Labels
        1. 17.2.1. Using the labelField property
      3. 17.3. List Control Events and Properties
      4. 17.4. Handling User Data Selections
        1. 17.4.1. Using the change event
        2. 17.4.2. Using the selectedItem property
        3. 17.4.3. Using the selectedIndex property
        4. 17.4.4. Selecting complex data objects
      5. 17.5. Using Custom Item Renderers
        1. 17.5.1. Using drop-in item renderers
        2. 17.5.2. Using inline renderers and editors
        3. 17.5.3. Using component item renderers
      6. 17.6. Summary
    3. 18. Using Advanced List Controls
      1. 18.1. Using the ComboBox Control
        1. 18.1.1. Using an editable ComboBox
        2. 18.1.2. Using a bindable ComboBox
      2. 18.2. Using the DataGrid Control
        1. 18.2.1. Customizing DataGrid display
        2. 18.2.2. Generating custom labels with DataGrid columns
      3. 18.3. Advanced Item Renderers and Editors
        1. 18.3.1. Using the dataChange event
        2. 18.3.2. Using item editors
      4. 18.4. Using HorizontalList and TileList Controls
      5. 18.5. Using the AdvancedDataGrid Control
        1. 18.5.1. Hierarchical data display
        2. 18.5.2. Grouping flat data
      6. 18.6. Summary
    4. 19. Using the Flex Charting Controls
      1. 19.1. Understanding Flex's Types of Charts
      2. 19.2. Declaring Chart Controls
      3. 19.3. Setting Chart Properties and Styles
        1. 19.3.1. Using pie charts
        2. 19.3.2. Using financial charts
        3. 19.3.3. Using bar, column, line, and area charts
      4. 19.4. Summary
    5. 20. Working with Data Entry Forms
      1. 20.1. Using the Form Container
        1. 20.1.1. Using the FormHeading control
        2. 20.1.2. Using the FormItem container
        3. 20.1.3. Setting a default button
      2. 20.2. Using Custom Form Components
        1. 20.2.1. Creating a custom Form component
        2. 20.2.2. Adding controls to a Form component
      3. 20.3. Validating Data Entry
        1. 20.3.1. Creating a validator object
        2. 20.3.2. Controlling validation with trigger events
        3. 20.3.3. Controlling validation with ActionScript
        4. 20.3.4. Controlling validation rules and error messages
      4. 20.4. Sharing Data with the Application
        1. 20.4.1. Modeling Form data with a value object
        2. 20.4.2. Dispatching a custom event
      5. 20.5. Summary
    6. 21. Working with HTTP Service and XML
      1. 21.1. Using RPC and REST Architectures
        1. 21.1.1. Understanding the Representational State Transfer architecture
        2. 21.1.2. Understanding the Remote Procedure Call architecture
      2. 21.2. Declaring and Configuring HTTP Service Objects
        1. 21.2.1. Creating an HTTP Service object
        2. 21.2.2. Essential HTTP Service properties
      3. 21.3. Sending and Receiving Data
        1. 21.3.1. Understanding asynchronous communications
        2. 21.3.2. Handling HTTP Service responses
        3. 21.3.3. Working with Item Responder and Async Token
      4. 21.4. Working with Value Objects
      5. 21.5. Passing Parameters to Server Pages
        1. 21.5.1. Using named parameters
        2. 21.5.2. Using bound parameters
      6. 21.6. Handling Cross-Domain Policy Issues
      7. 21.7. Summary
    7. 22. Managing XML with E4X
      1. 22.1. Using XML Classes
        1. 22.1.1. Creating an XML object
        2. 22.1.2. Using the XMLList class
        3. 22.1.3. Using the XMLListCollection class
      2. 22.2. Using E4X Expressions
        1. 22.2.1. Extracting data from XML objects
        2. 22.2.2. Modifying data in XML objects
      3. 22.3. Working with Namespaces
      4. 22.4. Summary
  9. IV. Integrating Flex Applications with Application Servers and the Desktop
    1. 23. Working with SOAP-Based Web Services
      1. 23.1. Understanding SOAP
      2. 23.2. Understanding WSDL
      3. 23.3. Using the Web Service Component
        1. 23.3.1. Installing Cold Fusion 8
        2. 23.3.2. Creating a Web Service object
        3. 23.3.3. Handling Web service results
        4. 23.3.4. Passing parameters to Web service operations
      4. 23.4. Using Web Service Introspection
        1. 23.4.1. Importing a Web service
        2. 23.4.2. Managing Web services
        3. 23.4.3. Using generated Web service proxy classes
      5. 23.5. Summary
    2. 24. Integrating Flex Applications with BlazeDS and Java
      1. 24.1. Using BlazeDS
        1. 24.1.1. Understanding supported platforms
        2. 24.1.2. Getting started with BlazeDS
      2. 24.2. Creating Flex Projects for Use with BlazeDS
      3. 24.3. Using the Proxy Service
        1. 24.3.1. Configuring the Proxy Service
        2. 24.3.2. Using the default destination
        3. 24.3.3. Using named destinations
      4. 24.4. Using the Remoting Service
        1. 24.4.1. Creating and exposing Java classes
        2. 24.4.2. Configuring Remoting Service destinations
      5. 24.5. Using the RemoteObject Component
        1. 24.5.1. Instantiating the RemoteObject component
        2. 24.5.2. Calling remote methods
        3. 24.5.3. Handling RemoteObject results
        4. 24.5.4. Passing arguments to remote methods
        5. 24.5.5. Passing data between ActionScript and Java
        6. 24.5.6. Using value object classes
      6. 24.6. Summary
    3. 25. Using the Message Service with BlazeDS
      1. 25.1. Understanding the Message Service
      2. 25.2. Configuring Messaging on the Server
        1. 25.2.1. Configuring channels for messaging
        2. 25.2.2. Configuring messaging adaptors and destinations
      3. 25.3. Creating a Flex Messaging Application
        1. 25.3.1. Creating a Flex project
        2. 25.3.2. Sending messages
        3. 25.3.3. Receiving and processing messages
      4. 25.4. Sending and Receiving Complex Data
      5. 25.5. Filtering Messages on the Server
        1. 25.5.1. Using the selector property
        2. 25.5.2. Using subtopics
      6. 25.6. Tracing Messaging Traffic
      7. 25.7. Summary
    4. 26. Integrating Flex Applications with ColdFusion
      1. 26.1. Understanding Flash Remoting and ColdFusion 8
        1. 26.1.1. Creating a Flex project for use with ColdFusion
        2. 26.1.2. Configuring Flash Remoting on the server
      2. 26.2. Creating ColdFusion Components for Flex
      3. 26.3. Using CFCs with the RemoteObject Component
        1. 26.3.1. Setting the source property
        2. 26.3.2. Creating a RemoteObject instance
        3. 26.3.3. Calling CFC functions
      4. 26.4. Handling CFC Function Results
        1. 26.4.1. Using binding expressions
        2. 26.4.2. Using the result event
        3. 26.4.3. Handling results from multiple CFC functions
      5. 26.5. Passing Arguments to CFC Functions
        1. 26.5.1. Using explicit arguments
        2. 26.5.2. Using bound arguments
        3. 26.5.3. Using named arguments
      6. 26.6. Using Value Object Classes
        1. 26.6.1. Creating a ColdFusion value object
        2. 26.6.2. Creating an ActionScript value object
        3. 26.6.3. Returning value objects from ColdFusion to Flex
        4. 26.6.4. Receiving value objects from ColdFusion
        5. 26.6.5. Passing value object arguments to CFC functions
      7. 26.7. Working with RemoteObject Faults
        1. 26.7.1. Handling the fault event
        2. 26.7.2. Generating custom exceptions from a CFC function
      8. 26.8. Summary
    5. 27. Using the ColdFusion Extensions for Flex Builder
      1. 27.1. Understanding ColdFusion Extension Features
      2. 27.2. Installing the ColdFusion Extensions for Flex Builder
      3. 27.3. Configuring RDS Servers
      4. 27.4. Connecting to ColdFusion Data Sources
        1. 27.4.1. Inspecting a data source
        2. 27.4.2. Viewing table data
        3. 27.4.3. Using the Visual Query Builder
      5. 27.5. Using the CFC Value Object Wizard
        1. 27.5.1. Preparing to use the CFC Value Object wizard
        2. 27.5.2. Running the CFC Value Object wizard
        3. 27.5.3. Understanding generated value object classes
        4. 27.5.4. Using the gateway CFC
        5. 27.5.5. A conclusion about the CFC Value Object wizard
      6. 27.6. Summary
    6. 28. Integrating Flex Applications with ASP.NET
      1. 28.1. Installing ASP.NET
      2. 28.2. Creating an XML Web Service
        1. 28.2.1. Creating a gateway file
        2. 28.2.2. Creating a code-behind module
      3. 28.3. Generating a Web Service in Flex Builder 3
        1. 28.3.1. Creating a Flex project with ASP.NET
        2. 28.3.2. Creating an SQL Server database connection
        3. 28.3.3. Generating a Flex/ASP.NET application
        4. 28.3.4. Understanding and using the generated code
      4. 28.4. Building Web Services with Visual Web Developer 2008
        1. 28.4.1. Creating a Web service
        2. 28.4.2. Configuring the development Web server
        3. 28.4.3. Testing a Web service
      5. 28.5. Exchanging Data with XML Web Services
        1. 28.5.1. Setting up the sample files
        2. 28.5.2. Returning data from .NET
        3. 28.5.3. Passing value objects to .NET service operations
      6. 28.6. Summary
    7. 29. Integrating Flex Applications with PHP
      1. 29.1. Installing PHP
        1. 29.1.1. Installing WAMP on Windows
        2. 29.1.2. Managing WAMP servers
        3. 29.1.3. Installing MAMP on Mac OS X
        4. 29.1.4. Managing MAMP servers
      2. 29.2. Creating a Flex Project for Use with PHP
      3. 29.3. Using PHP with HTTPService and XML
        1. 29.3.1. Using the PHP SimpleXML extension
        2. 29.3.2. Retrieving XML data with HTTPService
      4. 29.4. Generating PHP Code with Flex Builder 3
        1. 29.4.1. Importing a database to MySQL
        2. 29.4.2. Creating a MySQL database connection
        3. 29.4.3. Generating a Flex/PHP application
        4. 29.4.4. Understanding and using the generated code
      5. 29.5. Using PHP and Remoting with AMFPHP
        1. 29.5.1. Installing AMFPHP
        2. 29.5.2. Creating an AMFPHP service in PHP
        3. 29.5.3. Configuring AMFPHP Remoting in Flex Builder
        4. 29.5.4. Calling an AMFPHP service with RemoteObject
        5. 29.5.5. Returning complex data from AMFPHP
      6. 29.6. Summary
    8. 30. Deploying Desktop Application with AIR
      1. 30.1. Understanding AIR Architecture
      2. 30.2. Installing the Adobe Integrated Runtime
        1. 30.2.1. Downloading the AIR installer
        2. 30.2.2. Installing and uninstalling AIR on Windows
        3. 30.2.3. Installing and uninstalling AIR on Mac OS X
      3. 30.3. Creating a Flex Desktop Application
        1. 30.3.1. Creating a Flex desktop application project
        2. 30.3.2. Using the application descriptor file
        3. 30.3.3. Packaging a release version of an AIR application
        4. 30.3.4. Installing AIR applications
        5. 30.3.5. Uninstalling AIR applications
      4. 30.4. Flex Application Tips and Tricks with AIR
        1. 30.4.1. Debugging AIR applications in Flex Builder
        2. 30.4.2. Working with HTML-based content
        3. 30.4.3. Using the WindowedApplication component
        4. 30.4.4. Creating Remoting channels at runtime
      5. 30.5. A Conclusion about AIR
      6. 30.6. Summary
    9. Glossary