Atjaunināt sīkdatņu piekrišanu

Professional Adobe Flex 3 [Mīkstie vāki]

  • Formāts: Paperback / softback, 1488 pages, height x width x depth: 231x185x53 mm, weight: 2196 g, Illustrations, Contains 1 Digital online
  • Izdošanas datums: 01-Jun-2009
  • Izdevniecība: Wrox Press
  • ISBN-10: 0470223642
  • ISBN-13: 9780470223642
Citas grāmatas par šo tēmu:
  • Mīkstie vāki
  • Cena: 46,90 €
  • Grāmatu piegādes laiks ir 3-4 nedēļas, ja grāmata ir uz vietas izdevniecības noliktavā. Ja izdevējam nepieciešams publicēt jaunu tirāžu, grāmatas piegāde var aizkavēties.
  • Daudzums:
  • Ielikt grozā
  • Piegādes laiks - 4-6 nedēļas
  • Pievienot vēlmju sarakstam
  • Formāts: Paperback / softback, 1488 pages, height x width x depth: 231x185x53 mm, weight: 2196 g, Illustrations, Contains 1 Digital online
  • Izdošanas datums: 01-Jun-2009
  • Izdevniecība: Wrox Press
  • ISBN-10: 0470223642
  • ISBN-13: 9780470223642
Citas grāmatas par šo tēmu:
Provides information on using Flex 3 to develop rich Internet applications.

With Professional Adobe Flex 3, put your prior experience with Flash, ActionScript and XML-based languages to good use and learn how to use the Flex 3 platform to create Rich Internet Applications and AIR applications. Understand the potential of the Flex 3 platform through practical examples and hands-on advice on topics like desktop deployment, developing applications in MXML, creating custom flex components, charting, targeting AIR, and data interconnectivity.
Introduction iv
Part I: Introduction to Flex 3
1(100)
Why Flex?
3(14)
What Is Flex?
3(1)
What Is an RIA?
4(3)
Clarifying the Competition
6(1)
For the Love of Flex
7(8)
Bursting Myths about Flash and Flex
7(5)
10 Reasons to Love Flex
12(3)
Summary
15(2)
The Flex 3 Ecosystem
17(24)
A (Not So) Brief History of Flex
17(2)
The Adobe Flex 3 Ecosystem
19(16)
Runtimes
19(8)
Languages
27(3)
Frameworks and APIs
30(2)
Data Communications
32(2)
Servers
34(1)
The Adobe Flex RIA Process Flow
35(3)
Design and Development
36(1)
Execution
37(1)
Communication
37(1)
Infrastructure
38(1)
Future Additions to the Flex Ecosystem
38(1)
Summary
39(2)
ActionScript 3.0 Fundamentals
41(26)
Core Language Concepts
41(3)
Basic Syntax
42(1)
Reserved Keywords
43(1)
Variables and Data types
44(1)
Control Structures
44(3)
Conditional Statements
44(2)
Loops
46(1)
Using Classes and Data types
47(10)
Value Types
47(1)
Numbers
48(1)
Strings
49(1)
Arrays
50(2)
Vectors
52(1)
Objects
53(1)
Casting
54(1)
Introspection
55(2)
Object-Oriented Programming
57(8)
The Class Object
58(1)
Packages and Classes
58(1)
Class Attributes
59(1)
Class Members
59(5)
Interfaces and Inheritance
64(1)
Summary
65(2)
Using ActionScript 3.0
67(18)
The Flash Platform Framework
67(1)
Display Programming
68(1)
Understanding the Display Architecture
68(1)
The Event Model
69(4)
Event Classes and Types
69(1)
Event Process
70(1)
Event Flow
71(1)
The EventDispatcher Class
72(1)
The Flash Player APIs
73(10)
The Display API
74(4)
The Flash AIR APIs
78(1)
Flash 10 APIs
79(4)
Summary
83(2)
Introduction to Flex Builder 3
85(16)
Getting Started with Flex Builder
85(5)
Flex Builder and Eclipse
86(1)
Learning Flex and Getting Help
87(3)
The Flex 3 Workbench
90(8)
Workspaces
91(2)
Editors
93(1)
Views
93(1)
Perspectives
94(4)
What's New in Flex Builder 3
98(2)
New Wizards
98(1)
Design Mode Enhancements
98(1)
Development Enhancements
99(1)
CS3 Suite Integration
99(1)
Summary
100(1)
Part II: Developing with Flex 3
101(114)
Using Flex Builder 3
103(24)
The Flex Compilation Process
103(3)
Development
104(1)
Compilation
105(1)
Publishing
106(1)
About Projects
106(2)
Creating New Projects
107(1)
Creating a Flex Application
108(12)
Creating a Flex Project
108(3)
Using Design Mode
111(6)
Using Data Binding
117(1)
Using Triggers and Effects
118(1)
Compiling Your Application
119(1)
Creating an ActionScript Application
120(3)
Creating an ActionScript Project
120(3)
Comparing File Sizes
123(1)
The (Undocumented) [ SWF] Metadata Tag
123(2)
[ SWF] Metadata Properties
124(1)
Summary
125(2)
MXML Fundamentals
127(22)
Language Principles
127(6)
MXML Is XML
127(1)
Naming Conventions
128(1)
MXML Syntax
128(1)
Display Hierarchy
129(1)
MXML Namespaces
129(4)
Using MXML
133(15)
MXML Tags
133(2)
MXML Properties
135(4)
Using MXML and CSS
139(2)
Using MXML and ActionScript
141(7)
Summary
148(1)
Developing with Flex Builder 3
149(30)
Managing Projects
149(15)
Project Properties
149(5)
Exporting Projects
154(1)
Importing Projects
154(3)
Navigating Projects
157(7)
Building Applications
164(6)
Creating a Debug Release
164(1)
Creating an Export Release
165(2)
Enabling Source View
167(3)
Language Intelligence
170(8)
Code Editing
170(3)
Code Preferences
173(1)
Code Introspection
173(3)
Keyboard Shortcuts
176(2)
Summary
178(1)
Customizing Flex Builder 3
179(36)
Optimizing Flex Builder Performance
179(7)
Project Development Best Practices
179(2)
Eclipse Performance Management
181(5)
Customizing the Workbench
186(4)
Editing the Workspaces List
186(2)
Using Custom Shortcuts
188(1)
Layouts for Productivity
189(1)
Managing Workspace Preferences
190(1)
Using Code Repositories in Flex Builder
190(24)
Using the Local History
191(1)
Subclipse for Subversion Source Management
192(22)
Summary
214(1)
Part III: Working with Components
215(102)
The Component Life Cycle and Class Hierarchy
217(14)
The Role of Flash in Flex Applications
217(1)
The Flex Framework Life Cycle
218(4)
Frame-by-Frame
218(2)
The Life Cycle
220(2)
Flex Class Hierarchy
222(7)
Flash and Flex Class Packages
222(1)
UIComponent
222(2)
Container Classes
224(1)
List Classes
225(1)
Formatters, Validators, and Collection Classes
226(2)
Framework Functions and Events
228(1)
Summary
229(2)
Using Data Binding and Events
231(14)
Using {Curly Braces}
231(4)
[ Bindable] Metadata
235(1)
Events
236(2)
Capture Phase
236(1)
Target Phase
237(1)
Bubbling Phase
238(1)
Stopping Events
238(1)
Event Listeners
239(2)
Using MXML
240(1)
Using ActionScript
240(1)
Event Types
241(1)
Custom Events
241(3)
Creating Custom Events
241(1)
[ Event] Metadata
242(1)
Strategies for Using Custom Events
243(1)
Summary
244(1)
User Interface Controls and Containers
245(26)
Static Controls
245(3)
mx.controls.Label and mx.controls.Text
245(1)
mx.controls.Image
246(1)
mx.controls.SWFLoader
247(1)
mx.controls.HRule and mx.controls.VRule
247(1)
mx.controls.ProgressBar
248(1)
Input Controls
248(8)
mx.controls.Button and mx.controls.LinkButton
249(1)
mx.controls.TextInput and mx.controls.TextArea
249(1)
mx.controls.NumericStepper
250(1)
mx.controls.DateChooser and mx.controls.DateField
250(1)
mx.controls.CheckBox
251(1)
mx.controls.ComboBox
252(1)
mx.controls.RadioButton and mx.controls.RadioButtonGroup
252(1)
mx.controls.HSlider and mx.controls.VSlider
253(1)
mx.controls.RichTextEditor
254(1)
mx.controls.PopUpButton
254(1)
mx.controls.PopUpMenuButton
255(1)
mx.controls.ColorPicker
256(1)
Layout Containers
256(1)
mx.containers.Canvas
256(8)
mx.container.VBox and mx.container.HBox
257(1)
mx.containers.HDividedBox and mx.containers.VDividedBox
258(1)
mx.core.Application, mx.containers.Panel, mx.containers.TitleWindow
259(1)
mx.containers.Grid
260(1)
mx.containers.Tile
261(1)
mx.containers.Form
262(1)
mx.containers.ControlBar
263(1)
mx.containers.ApplicationControlBar
264(1)
Navigation Components
264(5)
creationPolicy
264(1)
mx.containers.Accordion
265(1)
mx.containers.TabNavigator
265(1)
mx.containers.ViewStack
266(1)
mx.controls.LinkBar
267(1)
mx.controls.TabBar
267(1)
mx.containers.MenuBar and mx.controls.Menu
268(1)
mx.controls.ButtonBar and mx.controls.ToggleButtonBar
269(1)
List Controls
270(1)
Summary
270(1)
Layout Strategies
271(10)
Coordinate Positioning
271(1)
Constraint Positioning
272(1)
Positioning by Percentage
273(1)
Positioning by Alignment
274(1)
Advanced Constraints
275(4)
ConstraintColumns
276(1)
ConstraintRows
277(1)
Constraints in ActionScript
278(1)
Constraint Sizes
278(1)
Using includeInLayout
279(1)
Performance Considerations
280(1)
Summary
280(1)
User Interface Integration
281(18)
Creating Forms
281(5)
Submitting Form Content
284(1)
Building Forms with Flex Builder Design View
285(1)
Setting the defaultButton on the Form
286(1)
Customizing Tooltips
286(2)
Custom ToolTips
286(2)
Creating Pop-Ups
288(7)
Alerts
289(2)
Using the PopUpManager
291(2)
Interacting with Pop-Ups
293(2)
Custom Cursors
295(2)
Cursor Management
295(1)
Busy Cursors
295(1)
Hand Cursors
296(1)
Custom Cursors
296(1)
Summary
297(2)
Getting Started with AIR
299(18)
What Does AIR Provide?
299(3)
Why Use AIR?
300(1)
Applications That Can Be Built with AIR
300(1)
Requirements for AIR
301(1)
Building an AIR Application
302(4)
The IntroToAIR.mxml File
303(1)
The IntroToAIR-app.xml Descriptor File
304(2)
The AIR Configuration File
306(5)
Building and AIR Application Part II
311(5)
Modifying the IntroToAIR.mxml Window
311(2)
The MainWindow.mxml File
313(1)
The IntroToAIR-app.xml Descriptor File
314(2)
Summary
316(1)
Part IV: Advanced Component Development
317(92)
Custom ActionScript Components
319(24)
Company Logo Example
320(3)
UlComponent and IUIComponent
320(1)
CompanyLogo.as
321(2)
Component Structure
323(10)
Component Properties and the Flex Framework Life Cycle
323(1)
Invalidate Functions
324(1)
Adding Child Components
325(1)
Using invalidateProperties() and Applying Properties to the Component
326(1)
Measuring Components
327(1)
Component Layout
328(2)
Selecting the Base Class for Your Component
330(2)
Sizing Child Components
332(1)
RockerSwitch Example
333(8)
Summary
341(2)
Custom MXML Components
343(10)
MXML Versus ActionScript Components
343(2)
Customizing the Layout
345(3)
Overriding updateDisplayList()
345(1)
Overriding layoutChrome()
346(2)
Setting Up Metadata Tags
348(1)
Creating Template Components
348(3)
DefaultProperty Meta Tag
350(1)
Creating Custom Children
350(1)
Extending MXML Components
351(1)
Summary
352(1)
Extending Flex Components
353(16)
A Look at Composite Components
353(1)
Creating Composite Components
354(4)
Properties
355(1)
Events
356(1)
Layout
357(1)
Extending Existing Components
358(3)
Extending Button
358(1)
Extending Textlnput
359(1)
Extending UlComponents versus Standard Components
360(1)
Appearance versus Behavior
361(1)
Custom Containers
361(6)
Applying the Flex Component Life Cycle
362(1)
Tag Cloud
363(2)
Customizing Composite Components
365(2)
Summary
367(2)
Advanced Event Programming
369(14)
Custom Events versus Standard Events
369(3)
Extending Standard Events
371(1)
One versus Many
371(1)
Adding Metadata to AS Class and MXML Files
372(1)
Adding Custom Events to Custom Components
372(1)
Handling Event Runtime Errors
373(1)
Event Flow
373(4)
Event Priority
373(1)
Preventing or Changing Default Behaviors
374(1)
Forwarding Events
374(3)
Custom Data Binding
377(3)
Using the Bindable Metadata Tag
377(1)
Custom Data Binding with the Bindable Metadata Tag
377(3)
Using BindingUtils
380(1)
Custom Data Binding in ActionScript
380(1)
ChangeWatcher
380(1)
Summary
381(2)
State Management
383(14)
What are States?
383(1)
The States Property
384(1)
Adding States
384(4)
Creating States Using Flex Builder's Design View
384(3)
Changing States
387(1)
Testing the Example
387(1)
Understanding the MXML Tags
388(3)
Adding Components
388(1)
Removing Components
389(1)
Gone, But Not Destroyed
389(1)
Setting and Changing Properties and Styles
390(1)
Changing Event Handlers
390(1)
Data Binding
391(1)
Creating States in ActionScript
391(2)
Real Estate Management
393(1)
Common Problems
393(2)
States versus ViewStacks
394(1)
Optimization
394(1)
Anticipating Transitions
395(1)
Summary
396(1)
Using Libraries
397(12)
ActionScript Libraries
397(2)
Flash Player Library
398(1)
Flex Libraries
398(1)
SWCs versus SWFs
399(1)
Anatomy of a SWC
399(1)
Creating a Library with Flex Builder
399(3)
Creating a Library Project
399(1)
Adding Sources
400(1)
Creating the SWC
400(2)
Creating Libraries with COMPC
402(2)
COMPC Options
403(1)
Adding Assets
403(1)
Specifying the Manifest File
403(1)
Best Practices for Component Libraries
404(1)
Sharing Source Directories
404(1)
Build to Sell
405(1)
Using Libraries
405(3)
The libs Folder
405(1)
The Build Path
406(1)
Using Assets from Libraries
407(1)
Using SWC Files
407(1)
Summary
408(1)
Part V: Visual Effects and Multimedia
409(160)
Styles
411(12)
What are CSS Styles?
411(11)
Inline Styling Versus CSS
411(2)
Component Styles
413(2)
CSS Constraint-Based Layout
415(3)
CSS Styles and Class Inheritance
418(1)
CSS Styles and Subcomponents
419(3)
Summary
422(1)
Skinning and Themes
423(14)
What are Skins?
423(10)
Embedded Assets
423(1)
Programmatic Skins
424(1)
Applying Skins
424(2)
Defining Skins per Object
426(1)
Defining Skins in Style Sheets
426(2)
Scaling and Scale-9 Grids
428(2)
Changing Styles at Runtime
430(3)
Themes
433(2)
Default Flex 3 Themes
433(1)
Applying Themes
433(2)
Creating Themes
435(1)
Separating Themes to Libraries
435(1)
Summary
435(2)
Visual Effects
437(24)
What are Flex Effects?
437(22)
Built-In Flex Effects
440(6)
Applying Effects
446(2)
Data Effects
448(1)
Easing Functions
449(1)
Composite Effects
450(4)
Transitions
454(3)
Effect Events
457(1)
3D Effects
458(1)
Flex 4 Effects
458(1)
Summary
459(2)
Dynamic Skinning and the Drawing API
461(20)
Understanding the Drawing API
461(10)
Basic Programmatic Drawing
462(9)
Programmatic Skins
471(4)
Creating and Applying Programmatic Skins
472(3)
Additional Drawing API Capabilities
475(4)
Masks
476(1)
Filters
477(1)
Blend Modes
478(1)
Degrafa
478(1)
Summary
479(2)
Flash Integration
481(22)
Flash Platform Development Workflows
482(1)
The Flash-Flex Workflow
483(2)
Creating Flex Component Skins in Flash
485(5)
Using the Flex Skin Design Extension
486(4)
Skinning a Custom Flex Component
490(11)
Planning Your Custom Flex Component
490(2)
Building the Flex Component
492(2)
Building the Flash Skin
494(4)
Skinning the Flex Component
498(3)
Summary
501(2)
Loading External Assets
503(10)
Loading Images
503(3)
The SWFLoader Class
506(1)
The Loader Class
507(4)
Runtime Shared Libraries
511(1)
Summary
511(2)
Video and Sound
513(32)
Methods for Bringing in Media
513(6)
Usable File Formats
514(1)
Integrating the Media Content
515(4)
Understanding Progressive Loading and Streaming
519(9)
The Sound Class
519(1)
The SoundLoaderContext Class
520(1)
Playing and Controlling Sound
521(4)
Accessing ID3 Information
525(3)
The SoundMixer Class
528(1)
The Microphone Class
528(1)
Video
528(15)
Video Classes and Components
528(8)
The VideoDisplay Component
536(2)
Cue Points
538(1)
The Camera Class
538(1)
Undocumented Video Classes
539(1)
Flash Player MovieStar Update
539(4)
Summary
543(2)
Advanced Flash Integration
545(24)
Bringing Flex Classes into Flash
545(2)
Importing Custom Flex Classes through RSLs
546(1)
Importing Native Flex Classes
547(1)
Bringing Flash into Flex
547(20)
The Flex Component Kit for Flash CS3
547(4)
Porting Flash Native Components into Flex
551(5)
Custom States and Transitions in Flex Components
556(11)
Summary
567(2)
Part VI: Data Management
569(132)
Working with Data
571(24)
XML
571(11)
Quick XML Primer
571(2)
XML and ActionScript: Before E4X
573(3)
XML and ActionScript 3.0: Using E4X
576(6)
Collections API
582(7)
IList
582(1)
ICollectionView
582(4)
ListCollectionView
586(3)
Associative Arrays/Dictionary
589(3)
Using Strings as Keys
589(1)
Using Objects as Keys
590(2)
Repeaters
592(2)
During Execution
592(1)
After Execution
593(1)
Handling Interaction
593(1)
When Not to Use Repeater
594(1)
Summary
594(1)
Formatters and Validators
595(18)
Overview
595(1)
Formatters
596(5)
Using Standard Formatters
596(4)
Handling Input Data Errors
600(1)
Validators
601(6)
Using Standard Validators
602(3)
Changing the Default Error Messages
605(1)
Triggering Validation
606(1)
Regular Expressions in ActionScript 3
607(1)
Common Regular Expression Use Cases
607(1)
A Regular Expression Primer
607(1)
RegExpValidator: A Validator's Validator
608(1)
Customizing and Centralizing Formatters and Validators
609(3)
Centralizing Formatters
609(1)
Centralizing Validators
610(2)
Summary
612(1)
Using the List Components
613(10)
ListBase is Everywhere
613(4)
ListBase APIs
614(3)
Working with the List Class
617(2)
Item-Editing Functionality in List
618(1)
List Descendents
619(1)
The Menu Class
619(2)
Creating Menu Objects
619(1)
Working with the Menu Class
620(1)
The TileBase Class
621(1)
HorizontalList
621(1)
TileList
621(1)
List, HorizontalList, and TileList---Optimized Memory Consumption
622(1)
Summary
622(1)
Advanced Data Controls
623(24)
Overview
623(1)
Tree
624(4)
Feeding the Tree
624(1)
Changing the Look of the Tree
625(1)
Working with the Tree Control
626(2)
DataGrid
628(4)
Populating the DataGrid
628(1)
Working with Columns
629(2)
Handling Events
631(1)
Customizing Renderers
632(5)
Customizing Cells
632(4)
Headers
636(1)
AdvancedDataGrid
637(3)
Implementing the AdvancedDataGrid
637(1)
Grouping Data in the AdvancedDataGrid
638(1)
Hierarchical Data in the AdvancedDataGrid
639(1)
OLAPDataGrid
640(4)
An OLAP Primer
640(1)
Working with the OLAPDataGrid
640(4)
Summary
644(3)
Drag and Drop in Flex
647(10)
Overview
647(1)
Working with Drag and Drop-Enabled Components
648(3)
Enabling a List for Drag and Drop
650(1)
Moving an Item
650(1)
Preventing Duplicates
651(1)
Working with Drag and Drop Events
651(1)
Adding Drag and Drop Support to Nonenabled Components
652(3)
Setting Up Your Component as a Drag Initiator
653(1)
Setting Up Your Component as a Drop Target
654(1)
Additional Drag and Drop Tips
655(1)
Custom DragSource Formats
655(1)
Custom Drag Proxy
655(1)
Maintaining Type Information
656(1)
Summary
656(1)
Drag and Drop in AIR
657(14)
Overview of AIR Drag and Drop
657(5)
The Clipboard
658(2)
The NativeDragManager
660(2)
Dragging Data from an AIR Application
662(4)
Dragging Files to an AIR Application
666(3)
Summary
669(2)
Using the Charting Components
671(18)
Understanding Charting
671(13)
Assigning Data to a Chart
671(1)
Chart Types
672(8)
Chart Axes
680(1)
Chart Series
681(1)
Chart Data Tips
682(1)
Chart Legends
683(1)
Runtime Chart Interaction
684(1)
Handling User Interaction
684(1)
Programmatic Interaction
684(1)
Customizing a Chart's Look and Feel
685(2)
Custom Renderers
685(1)
Styling
686(1)
Effects
686(1)
Summary
687(2)
Resource Bundles and Data Localization
689(12)
Overview
689(1)
L10n Using Properties Files
690(4)
Understanding Properties Files
690(1)
Dealing with Character Encoding
691(1)
Setting Up Locales in Your Flex Project
692(2)
Implementing i18n in Flex 3
694(4)
Utilizing Your Resources
694(4)
Loading Resources at Runtime
698(1)
Resource Modules
698(1)
Programmatically Generating ResourceBundle
699(1)
Pairing Resources with Modules
699(1)
Globalizing AIR Applications
699(1)
Summary
700(1)
Part VII: Client Communications
701(132)
Browser Communication in Flex
703(18)
Understanding the Web Context
703(1)
Using flashVars to Pass Data into Flex
704(2)
Linking to an External Page URL
706(1)
Interacting with JavaScript
706(11)
Invoking JavaScript from Flex
707(1)
Invoking ActionScript from JavaScript
708(1)
Passing Data Between ActionScript and JavaScript
709(8)
Using the Flex-Ajax Bridge
717(1)
Disabling Browser Integration
718(1)
Summary
719(2)
HTML Mashups with AIR
721(10)
Why Embed HTML in an AIR Application?
721(1)
YouTube Sample
722(1)
Displaying HTML in AIR
722(4)
Loading Remote Content
723(1)
Loading In-Memory Content
724(1)
Loading Local File Content
724(2)
Ineracting with JavaScript
726(4)
Calling Embedded JavaScript from ActionScript
726(2)
Calling ActionScript from JavaScript
728(1)
Controlling the HTML DOM from ActionScript
729(1)
Summary
730(1)
Deep Linking
731(20)
Deep Linking on the Web
731(1)
Deep Linking with Flex
732(1)
Fragment Identifiers in URLs
733(1)
Flex 3 Support for Deep Linking
733(6)
Using the BrowserManager API
734(4)
Under the Hood: How Flex Deep Linking Works
738(1)
Real-World Deep Linking: the Space Image Browser
739(8)
Working with Navigational States
740(3)
A More Sophisticated Image Browser
743(4)
Search Engine Indexing and Optimization
747(1)
Related Technologies and Tools
748(1)
SWFAddress
748(1)
UrlKit
748(1)
History Manager
749(1)
Summary
749(2)
System Interactions in Flex
751(16)
Detecting Client System Capabilities
751(6)
Going Full Screen
757(3)
Enabling Right-Click Context Menus
760(5)
Adding and Removing Context Menu Options
760(3)
Invoking Actions from Context Menus
763(2)
Limitations of System Interactions
765(1)
Limitations of Full-Screen Mode
765(1)
Limitations of Custom Context Menus
766(1)
Summary
766(1)
Native Desktop Support with AIR
767(22)
Working with Windows
767(7)
Creating a Native Window
768(5)
The Native Window Explorer
773(1)
Native Menus
774(8)
Context Menus
774(6)
Windows- and Application-Level Menus
780(2)
Interacting with the System Tray/Dock
782(2)
Sending Notifications
784(1)
Detecting User Presence
784(1)
Monitoring Network Connection
785(1)
AIR Capabilities and the Flash Runtime
786(1)
Enabling Full-Screen Mode
787(1)
Summary
787(2)
LocalConnection and Shared Objects
789(14)
Overview
789(1)
The LocalConnection Class
789(5)
SWF-to-SWF Communication
790(2)
Crossing Domain Boundaries
792(1)
Working with Data
793(1)
Working around the 40KB Limit
793(1)
Standard LocalConnection Errors
794(1)
Working with Local Shared Objects
794(7)
Creating or Retrieving Local Shared Objects
795(1)
Storing Data in Local Shared Objects
795(1)
Retrieving Data from Local Shared Objects
795(1)
Explicitly Saving Local Shared Objects
795(2)
Deleting Properties and Destroying Local Shared Objects
797(1)
Additional Information
797(2)
Serializing Custom Classes
799(2)
Summary
801(2)
File Management with Flex
803(10)
Overview
803(1)
Prerequisites
803(1)
Using the FileReference Class
804(4)
Handling FileReference Events
804(1)
Uploading Files
805(3)
Downloading Files with FileReference
808(1)
Canceling a File Upload or Download
808(1)
Working with Multiple Files
808(2)
Server-Side Considerations
810(1)
Summary
811(2)
Local File Management with AIR
813(20)
File Operations
813(3)
Referencing Directories
813(1)
Referencing Files
814(1)
Navigating Paths
814(2)
Synchronous versus Asynchronous API
816(3)
Copying a File Synchronously
817(1)
Copying a File Asynchronously
817(2)
Other File and Directory Operations
819(2)
Checking for Existence
819(1)
Deleting Files and Directories
819(1)
Moving Files and Directories
819(1)
Enumerating a Directory
820(1)
Creating Temporary Directories and Files
820(1)
Working with Native File Dialogs
821(5)
Native Directory Browser
821(1)
Native Browse for Open Dialog
822(2)
Native Browse for Open Multiple Dialogs
824(1)
Native File Save Dialog
825(1)
Reading and Writing File Data
826(2)
Saving Bitmap Data as a JPEG File
827(1)
Reading XML Data from a File
828(1)
Filesystem Controls
828(3)
Encrypted Local Data
831(1)
Writing Data
831(1)
Reading Data
831(1)
Deleting Data
832(1)
Summary
832(1)
Part VIII: Server Integration
833(118)
Introduction to RPC Services
835(18)
Overview
835(2)
The mx.rpc Libraries
837(2)
Differences between MXML and ActionScript Classes
838(1)
Parameter Binding versus Explicit Parameter Passing
838(1)
Working with the HTTPService Component
839(2)
Working with the WebService Component
841(4)
Using a WebService in MXML
841(3)
Calling a WebService in ActionScript
844(1)
Debugging Remote Service Calls
845(5)
Network Packet Sniffing
846(1)
Debug Tracing in mx.rpc
846(4)
Choosing a Protocol and Server Implementation
850(1)
Alternative Server Implementations for AMF
850(1)
Summary
851(2)
Error Handling
853(12)
Exception Handling with Synchronous Code
853(7)
Flash Debug Player versus Release Player
853(2)
Try/Catch/Finally
855(1)
Exception Bubbling
856(2)
Custom Error Types
858(2)
Asynchronous Error Handling with Events
860(3)
Important Error Events
861(1)
Asynchronous Events in the Debug Player
862(1)
Summary
863(2)
Flex and Flash Media Server
865(16)
Benefits of Streaming Video with the FMS
865(2)
Playing Video on Demand
866(1)
Setting Up Applications and Understanding Instances
867(1)
Developing for the Flash Media Server in Flex
868(4)
Using the Bandwidth Check System of the Flash Media Server
869(3)
Understanding the Netstream with FMS
872(1)
Buffer Control
873(1)
Publishing Video
874(3)
Using the Flash Media Server for Live and Recorded Streams
875(2)
Data with the Stream
877(3)
Flash Media Server
878(2)
Summary
880(1)
RESTful Web Services with Flex and the Zend Framework
881(18)
What is a RESTful Web Service?
881(1)
The Routes Sample RESTful API
882(4)
Setting Up the Server and Development Environment
883(3)
Client Software You Might Need
886(1)
How Zend Works
886(3)
The Flex Sample Application
889(7)
Retrieving Data from a RESTful Service
889(5)
Creating and Updating Data with a RESTful Service
894(2)
Deleting Data from a RESTful Service
896(1)
Summary
896(3)
Integrating Flex and Java
899(16)
Introduction to the Routes Web Service
899(1)
Setting Up the Server and Development Environment
900(2)
Server Software Requirements
900(2)
Client Software you Might Need
902(1)
The Grails Routes Web Service
902(4)
Grails Code Supporting the Web Service
903(3)
The Flex Sample Application
906(7)
The RouteService.as Service Class
906(1)
Using IResponder
906(3)
Working with Custom Server-Side Errors
909(4)
Summary
913(2)
Web Services with .NET and Flex
915(14)
Introduction to the Routes Web Service
915(1)
Setting Up the Server and Development Environment
916(2)
Server Software Requirements
916(2)
Client Software You Might Need
918(1)
The .NET Routes Web Service
918(3)
.NET Code Supporting the Web Service
918(3)
The Flex Sample Application
921(6)
The Import Web Service (WSDL) Tool
922(2)
Accessing the Web Service
924(1)
Working with Custom Server-Side Errors
925(2)
Summary
927(2)
Offline Data Access with AIR
929(22)
Introduction to SQLite
929(1)
SQLite versus XML
930(1)
Synchronous versus Asynchronous
930(1)
Creating a Database
931(4)
Opening a Database Asynchronously
931(2)
Opening a Database Synchronously
933(1)
Working with Data Definition Language
933(2)
Working with Data
935(6)
Creating Data
936(2)
Retrieving Data
938(1)
Updating Data
939(1)
Deleting Data
940(1)
Using Transactions to Import Data
941(2)
Making Online Data Available for Offline Access
943(6)
Importing XML into a SQLite Database
944(4)
Improving the XML to SQLite Importer
948(1)
Using Third-Party SQLite Database Management Applications
949(1)
Summary
949(2)
Part IX: Data Services
951(122)
Introduction to LCDS
953(18)
Overview of LCDS
953(2)
LCDS Resources
955(1)
Understanding LCDS
955(8)
Data Service Solutions
956(1)
Client Architecture
956(2)
Server Architecture
958(1)
The Service Types
959(2)
Communication Channels
961(1)
Action Message Format (AMF)
962(1)
Creating an LCDS Project in Flex Builder
963(5)
The New Flex Project Wizard
963(3)
Configuring the Application Server
966(2)
Troubleshooting
968(1)
Logging
968(1)
Server-Side Debugging
969(1)
Summary
969(2)
LCDS and ColdFusion
971(8)
ColdFusion 8 and Integrated LCDS
971(4)
LCDS-Specific ColdFusion Installation Screens
971(2)
LCDS-Specific ColdFusion Administrator Screens
973(2)
Event Gateways
975(1)
DataServicesMessaging
976(1)
DataManagement
976(1)
Data Management
976(1)
Summary
977(2)
The Message Service
979(26)
Message Service Overview
979(1)
Message Service Technology Explained
979(2)
Publish and Subscribe
979(1)
Producers and Consumers
980(1)
Messages Travel through a Channel
980(1)
Pushing Messages from the Server
980(1)
Using the Message Service
981(9)
Configuring a Destination on the Server
981(2)
Creating Messages on the Client
983(1)
Sending Messages
984(1)
Receiving Messages
985(1)
Declaring Producers and Consumers in MXML
986(1)
Filtering Messages
987(1)
Detecting Connectivity
988(1)
Publishing from the Server
988(2)
Message Service Applications
990(14)
Chat Rooms
990(3)
Stock Price Ticker
993(4)
Generating a PDF
997(7)
Summary
1004(1)
The Data Management Service
1005(24)
Overview of the DMS
1005(1)
Why Use the DMS?
1006(2)
All about Domain Modeling
1006(1)
Create, Read, Update, Delete
1006(1)
Sharing Data Among Users
1006(1)
Paging Large Data Sets
1007(1)
Occasional Connectivity
1008(1)
Seeing Is Believing: The Six-Line Demo
1008(2)
Declaring a Data Service
1009(1)
Declaring a Collection for the Managed Data
1009(1)
Providing Managed Data to a Data Grid
1009(1)
Filling the Collection
1009(1)
Committing Changes and Synchronizing Clients
1010(1)
Reverting Changes
1010(1)
Behind the Scenes
1010(1)
DMS Technology Explained
1010(5)
Client and Server Components
1010(1)
Managed Data
1011(1)
Managed Relationships
1011(1)
Client Programming
1012(2)
Server Integration
1014(1)
Client and Server Collaboration
1015(1)
Example Application: DMS Fleet Tracker
1015(13)
Domain Modeling
1016(3)
DMS Configuration
1019(3)
Custom Assemblers
1022(2)
Client Coding
1024(3)
Further Considerations
1027(1)
Summary
1028(1)
Advanced Data Management Services
1029(10)
Overview of DMS
1029(1)
Summary-to-Details Modeling
1030(1)
Replace Lazy Relationship with Get Item
1030(1)
Overcoming Item-Pending Errors
1031(2)
Repeated Attacks
1032(1)
Managing Shared and User-Specific Data
1033(3)
A Simple Instant Messaging System
1033(1)
Creating a New MessageDetails Item
1034(1)
Creating and Delivering the User Messages
1034(2)
Streaming AMF to an NIO End Point
1036(1)
Learning More
1036(1)
Summary
1037(2)
The Data Services Stress Testing Framework
1039(14)
Overview
1039(2)
Stress Testing a Data Management Service Application
1041(8)
Prerequisites
1041(1)
Writing the Test Application
1041(3)
Configuring the Server
1044(2)
Configuring and Starting the Browser Servers
1046(1)
Compiling the Test Administrator
1047(1)
Running the Stress Test
1047(2)
Further Topics
1049(2)
Parameterizing Test Applications
1049(1)
Preconfiguring the Test Administrator
1049(1)
Creating Customized Test Reports
1050(1)
Summary
1051(2)
Using BlazeDS
1053(20)
Overview
1053(1)
BlazeDS Features
1054(2)
Services and Client Components
1054(1)
Channels of Communication
1055(1)
Integration Points
1055(1)
Developing a BlazeDS Project
1056(15)
Installing the BlazeDS Turnkey
1056(1)
Creating a Combined Flex/Java Project
1057(3)
Using a Remote Object
1060(7)
HTTP and Web Services
1067(4)
Summary
1071(2)
Part X: Using Cairngorm
1073(66)
MVC Frameworks
1075(8)
What Is MVC?
1075(1)
MVC Components
1076(2)
Understanding the Data Model
1076(1)
Understanding the View
1077(1)
Understanding the Controller
1077(1)
Putting the Pieces Together
1078(1)
Why MVC?
1078(3)
Abstraction
1079(1)
Component Reuse
1079(1)
Distributed Development
1079(1)
Maintenance
1080(1)
Is There a Definitive MVC?
1080(1)
An MVC Approach to Component Architecture
1081(1)
Summary
1081(2)
Introduction to Cairngorm
1083(12)
Overview
1083(1)
The Steps of a Cairngorm Interaction
1083(11)
The User Gestures
1084(1)
An Event Is Dispatched
1085(1)
A Command Executes
1086(1)
A Business Function Is Delegated
1087(2)
A Service Is Located and Invoked
1089(1)
The Model Is Located and Updated
1090(2)
The View Reflects the Changes
1092(2)
Summary
1094(1)
Applied Cairngorm
1095(24)
Getting Started
1095(1)
The Main Players
1096(22)
Model Locator
1096(6)
Front Controller
1102(2)
Cairngorm Events
1104(4)
Cairngorm Commands
1108(2)
Business Delegates
1110(3)
Service Locator
1113(2)
Value Objects
1115(3)
Summary
1118(1)
Advanced Cairngorm
1119(20)
The Presentation Model Pattern
1119(6)
Using Cairngorm with Presentation Models
1120(1)
Sample Cairngorm Presentation Model Application
1121(3)
Domain Models
1124(1)
Taking Things Further
1125(1)
Organizing Cairngorm Projects
1125(2)
Small Cairngorm Projects
1125(1)
Large Cairngorm Projects
1126(1)
Cairngorm Anti-Patterns
1127(4)
The Fat Controller
1127(1)
Model Locator Landfill
1128(1)
Chains of Dependency
1129(2)
Customizing Cairngorm
1131(7)
Logging Cairngorm Events and Commands
1131(1)
Timing Asynchronous Commands
1132(1)
Injecting Dependencies into Commands
1133(2)
Stubbing the Service Layer
1135(1)
Decentralized Controllers
1136(1)
Disposable Controller
1137(1)
Summary
1138(1)
Part XI: Application Development Strategies
1139(104)
Best Practices
1141(20)
Coding Standards
1141(8)
Consistency
1141(1)
Clarity
1142(1)
Cleanliness
1142(7)
Object-Oriented Principles
1149(11)
Encapsulation
1149(1)
When to Use Public/Private/Protected/Final Functions
1150(1)
Inheritance
1151(7)
Code Behind
1158(2)
Summary
1160(1)
The Security Model
1161(10)
Understanding the Security Sandbox
1161(1)
What Is crossdomain.xml?
1162(5)
Local Sandboxes
1167(2)
Summary
1169(2)
Modular Application Development
1171(18)
Overview
1171(1)
Why Modular Development?
1172(1)
Building Components
1173(1)
Runtime Shared Libraries
1173(1)
Using the Module and ModuleLoader Classes
1173(14)
Cross-Module Communication
1177(5)
Cross-Module Data Access
1182(5)
Summary
1187(2)
Application Performance Strategies
1189(14)
Understanding Object Creation Policies
1189(1)
Structuring Data for Performance
1190(2)
Lazy Loading Data
1190(1)
Impacts of Multiple Service Invocations
1191(1)
Managing Event Listeners and Data Bindings
1192(3)
Collection Events
1192(2)
Cleaning Up Unused Event Listeners
1194(1)
Weak Referenced Event Listeners
1194(1)
Cleaning Up Event Listeners Manually
1194(1)
Associative Arrays and Dictionaries
1195(3)
Working with Graphics
1198(3)
Frame Rates
1198(1)
Using Bitmap Caching
1198(1)
Managing External SWF Content
1199(1)
Object Caching and Recycling
1199(2)
Summary
1201(2)
Project Documenting with ASDoc
1203(12)
What Is ASDoc?
1203(1)
Using ASDoc
1204(1)
ASDoc Comments and Formatting
1205(9)
ASDoc Tags
1206(1)
Classes
1206(1)
Functions
1207(1)
Properties
1208(1)
Getters and Setters
1209(1)
Metadata
1210(1)
Formatting with HTML
1211(1)
Referencing Outside Elements
1212(1)
Excluding Classes from Generated Output
1213(1)
Applying Custom Templates
1213(1)
Summary
1214(1)
Desktop Deployment with AIR
1215(14)
Code Signing and Certificates
1215(7)
Acquiring a Certificate
1216(2)
Creating and Signing an AIR Package in Flex Builder
1218(2)
Code Signing with a Developer Certificate
1220(2)
Package and Signing AIR Applications with the Command Line
1222(1)
Distributing AIR Applications
1222(5)
Web Page Badge Installation
1223(1)
Using the Web Badge SDK
1223(3)
Silent Installations
1226(1)
Updating AIR Applications
1227(1)
Summary
1228(1)
Dual Deployment for Flex and AIR
1229(14)
Coding by Interface
1229(9)
Pros
1231(1)
Cons
1231(1)
Setting Up the Flex Builder Projects
1232(1)
Referencing the MainAppEntryPoint Component
1233(2)
Working with the IApplicationPersistence Interface
1235(1)
Working with the ApplicationPersistenceFactory
1235(3)
Using Conditional Compilation
1238(3)
Pros
1238(1)
Cons
1238(1)
Overview of the Conditional Compilation Approach
1238(1)
Looking at the ApplicationPersistence File
1239(1)
Configuring the Flex Compiler
1240(1)
Summary
1241(2)
Part XII: Testing and Debugging
1243(112)
Debugging Flex Applications
1245(22)
Overview
1245(1)
Flash Debug Player
1245(1)
The Flex Builder Debugging Perspective
1246(9)
Placing Breakpoints
1246(3)
Launching an Application in Debug Mode
1249(1)
Stepping through Code
1250(2)
Examining Application State
1252(3)
The Command-Line Debugger
1255(1)
Additional Debugging Techniques
1255(10)
Debugging Java Server-Side Code
1255(2)
Monitoring Internet Traffic
1257(2)
Application-Specific Debugging
1259(1)
Making the Most of Logging
1259(1)
Debugging Bindings
1260(2)
Adobe Public Bug Database and Issue Reporting System
1262(3)
Summary
1265(2)
Using the Flex Profiler
1267(36)
Overview
1267(1)
Before You Get Started
1268(1)
Profiling Basics
1268(3)
Performance Profiling and Optimization Best Practices
1268(2)
Memory Profiling Basics
1270(1)
Performance Profiling Basics
1270(1)
Sampling Profiler Basics
1270(1)
Flex Builder 3 Profiling
1271(21)
The Profiling Perspective
1271(1)
Launching the Profiler
1272(4)
Using the Memory Profiler
1276(8)
Using the Performance Profiler
1284(3)
Filtering in the Profiler
1287(2)
Saving and Loading Profiling Data
1289(1)
Other Useful Features
1290(2)
The Profilers in Action
1292(8)
Using the Memory Profiler to Detect Leaks
1292(4)
Using the Performance Profiler to Optimize an Algorithm
1296(4)
Creating Your Own Profiler
1300(1)
Summary
1301(2)
Unit Testing and Test-Driven Development with FlexUnit
1303(24)
Overview
1303(1)
Why Write Tests?
1304(1)
Preventing Bugs in the First Place
1304(1)
Gaining the Confidence to Refactor
1304(1)
Driving Improvements in Design
1304(1)
Writing Testable Software
1304(1)
Happy Developers and Effortless Documentation
1305(1)
Technology and Terminology
1305(2)
The FlexUnit Library
1305(1)
Unit Tests, Test Cases, and Test Suites
1306(1)
Running Tests
1306(1)
Test-Driven Development by Example
1307(11)
Preparing for Unit Testing
1307(1)
Creating a Test Case
1308(1)
Assembling a Test Suite
1308(1)
Failing the Test!
1309(1)
Prepare, Invoke, Assert
1310(3)
Happy and Unhappy Paths
1313(2)
Setting Up and Tearing Down
1315(2)
White Belt in Testing
1317(1)
Further Topics
1318(6)
Organizing Test Suites
1318(1)
Removing Dependencies with Mock Objects
1318(4)
Continuous Integration with Ant and Maven
1322(1)
Eventful Test Cases
1323(1)
Test Coverage
1323(1)
Behavior-Driven Development
1324(1)
Summary
1324(3)
The Logging Framework
1327(16)
Overview
1327(1)
Using the Logging Framework
1328(3)
Creating a Logging Target
1328(1)
Getting the Right Logger
1328(1)
Logging at Different Levels
1329(1)
Filtering Log Statements
1330(1)
Log Only When Necessary
1330(1)
Customizing the Logging Framework
1331(4)
Implementing a Remote Logging Target
1331(1)
Implementing the Java Remote Logger
1332(2)
Creating a Client that Logs Remotely
1334(1)
Further Topics
1335(7)
Embedded Log Viewer
1335(2)
Stopwatch Logging
1337(2)
Logging to Firebug with ThunderBolt
1339(2)
Removing Logging from Production Code
1341(1)
Summary
1342(1)
The Automation Framework
1343(12)
Overview
1343(1)
The Technology Explained
1344(2)
Recording and Playback
1344(1)
The Automation Libraries
1345(1)
Runtime or Compile-Time Automation
1345(1)
Component Identification
1346(1)
Automating a Simple Application
1346(7)
Installing an Automation Tool
1347(1)
Creating a Testable Application
1347(1)
Compiling for Automation
1348(1)
Recording a Test Script
1349(3)
Replaying a Test Script
1352(1)
Further Topics
1353(1)
Automating Custom Components
1353(1)
Creating a Custom Agent
1353(1)
Summary
1354(1)
Appendix A: ActionScript Language Comparison
1355(10)
Runtime Environment Concerns
1355(2)
Compilation
1355(1)
Runtime Engines
1355(1)
Memory Management
1356(1)
Block-Level Scoping
1356(1)
The Notion of Global Variables
1357(1)
Using Console Output
1357(1)
Language Differences
1357(3)
Working with Data Types
1357(2)
Type Casting
1359(1)
Declarations
1359(1)
Statement Termination
1360(1)
Regular Expressions
1360(1)
OOP Differences
1360(3)
Classes, Filenames, and Packages
1360(1)
Polymorphism
1361(1)
Inheritance
1362(1)
Access Modifiers
1362(1)
Dynamic Classes
1362(1)
Summary
1363(2)
Index 1365
Joseph Balderson has been fascinated by computers and programming since picking up LEGOs and disassembling nearly every appliance he could find as a child, progressing on to electronics, microcontrollers, and robotics as a teen. This interest took a detour in his college years, when he attended art school and studied poetry, philosophy, and graphic design. When he discovered Flash 4 in 1999, Joseph found his true vocation, one that would allow him to combine his passions for art and science, design, and programming under one roof. Peter Ent is a Computer Scientist at Adobe, working with the LiveCycle team. Prior to this, Peter worked for Adobe Customer Care as a Flex support engineer and then as a technical account manager. Before joining Adobe, Peter worked in the financial services industry at State Street and Fidelity Investments. He also has experience at two startups, building software applications doing imaging and molecular modeling. Peter holds a BS in Computer Science from Syracuse University. Jun Heider is a senior developer and technical trainer with RealEyes Media, an Adobe partner company based in Denver, Colorado, with a focus in rich Internet applications. Jun graduated from Regis University with a BS in Computer Networking and has a number of technical certifications. Todd Prekaski has been building software since 1993 (not including his youthful days programming an Apple IIc and TRS-80). He's been leading application development and strategy for Web-based startups and Fortune 100/500 enterprises ever since, using a panoply of technologies and platform, including Java, .NET, and LAMP. Todd is currently the chief technical architect at Beacon Street Software, based in Boston, Massachusetts. Occasionally, his thoughts show up in his blog at www.simplifiedchaos.com. Tom Sugden is a technical architect for Adobe Professional Services. His interest in computers began in the 1980s, programming sport simulators and beep-music on the ZX Spectrum 48k. When the keyboard broke from too much Dailey Thompson, Tom upgraded to the Commodore Amiga and continued to create amateur games (but with multi-channel sound) in AMOS, before dabbling in the black art of Assembly language. Andrew Trice is the principal architect for Flex and AIR for Cynergy Systems, based in Washington, DC. He specializes in data visualization, client/server architectures, object-oriented principles, and rich application development. He has been developing for the Web for more than a decade, with more than eight years in development for the Flash platform. Andrew has developed with Flex since version 1.5, and thrives off the creativity and rich experience that the Flex/Flash platform enables. Andrew is also a regular author for Adobe Devnet and other industry weblogs. He is known not only for Flex expertise but is also a Microsoft Certified Application Developer and possesses a wide range of knowledge regarding relational databases, AJAX/JavaScript, ColdFusion, .NET, and Java-based Web applications. David Hassoun is the founder of RealEyes Media, LLC, a digital media firm based in Colorado that focuses on interactive motion media and advanced Flash and Flex platform applications. David has always had a passion for motion media, the power of video, and the challenges of usability and interactivity. David is an Adobe Certified Master Instructor, teaches advanced RIA classes at the University of Denver, serves as the Rocky Mountain Adobe user group manager, and has taught and developed advanced Flash and Flex application courses. As a consultant or while employed with other firms, he has worked for a wide range of companies such as American Express, Chase Manhattan, Qwest, Boeing, Macromedia, Adobe, the U.S. Air Force, Bechtel/Bettis, and many more. David regularly performs advanced code and technical best practices reviews, and has provided directional advice for international industry leaders over the past years - including many technical, courseware, and application reviews as an industry expert. Joe Berkovitz is president of Noteflight LLC, maker of the world's first online music notation editor, and is a senior software architect with consulting shop Infrared5. With almost three decades of designing and building world-class software, Joe brings creativity and discipline to his work in Flash and Flex. He is a frequent speaker at conferences and is the originator of the popular MVCS architecture for complex Flex applications. Joe has published several ambitious open-source projects, most recently the Moccasin graphical editing framework and Flexcover, a code coverage tool for AS3. Joe is an active pianist and composer, and performs frequently in the Boston area.