| About the Author | p. xvii |
| About the Technical Reviewers | p. xviii |
| About the Cover Image Designer | p. xix |
| Acknowledgments | p. xx |
| Introduction | p. xxi |
| Introducing the Architecture | p. 1 |
| OOP in Component Design | p. 3 |
| A very short history of the architecture | p. 4 |
| Creating Flash components | p. 4 |
| An apparently useless component | p. 5 |
| Inheritance | p. 14 |
| Events | p. 20 |
| Polymorphism | p. 26 |
| Summary | p. 31 |
| Core Classes and Component Design | p. 33 |
| The legacy of the UIObject class | p. 36 |
| Refining our sample components | p. 46 |
| The component framework | p. 51 |
| Summary | p. 57 |
| Exploring the UI Components | p. 59 |
| The Reusability Card | p. 60 |
| Multitier applications | p. 64 |
| UI components provided with Flash | p. 65 |
| Using the UI components | p. 82 |
| Typical structure of a component | p. 85 |
| Summary | p. 88 |
| Building Component-based Applications | p. 91 |
| Screens | p. 92 |
| Creating a slide presentation dynamically | p. 102 |
| Manager classes | p. 114 |
| Summary | p. 128 |
| Exploiting the Architecture | p. 129 |
| Architecture-based Development | p. 131 |
| Exploiting the architecture | p. 132 |
| Raising the bar | p. 134 |
| What is an XML layout engine? | p. 138 |
| XLEFF | p. 140 |
| Summary | p. 146 |
| XML for Defining User Interfaces | p. 149 |
| Basics of the XML data structure | p. 150 |
| XLEFF sampler | p. 158 |
| Summary | p. 169 |
| Extending the Application Framework | p. 171 |
| Defining an FLA template | p. 172 |
| Defining a folder structure | p. 183 |
| Facilitating event-driven programming | p. 186 |
| Managing content | p. 194 |
| Summary | p. 198 |
| Making Your XML Life Easier | p. 201 |
| Parsing XML in ActionScript | p. 202 |
| Simplifying the parsing process | p. 209 |
| A few notes on the use of XModel | p. 217 |
| Summary | p. 217 |
| The Customization Process | p. 219 |
| Working with styles | p. 220 |
| Analyzing skins | p. 228 |
| Working with themes | p. 236 |
| Summary | p. 249 |
| Customizing the Components | p. 251 |
| The Accordion Component | p. 253 |
| A minimal example | p. 254 |
| The component structure | p. 257 |
| A richer example | p. 259 |
| Supported styles | p. 262 |
| Skinnability | p. 265 |
| Solved mysteries | p. 268 |
| Reasons for subclassing | p. 273 |
| The Button Component | p. 275 |
| Minimal example of the Button component | p. 276 |
| Supported styles | p. 279 |
| Skinnability | p. 284 |
| Solved mysteries | p. 290 |
| Reasons for subclassing a Button component | p. 293 |
| The CheckBox and RadioButton Components | p. 295 |
| Minimal example of the CheckBox and the RadioButton components | p. 296 |
| Supported styles | p. 298 |
| Skinnability | p. 302 |
| Solved mysteries | p. 305 |
| Reasons for subclassing the CheckBox and the RadioButton components | p. 307 |
| The List, ComboBox, and DataGrid Components | p. 309 |
| Minimal example including the List, ComboBox, and DataGrid components | p. 310 |
| Richer examples | p. 314 |
| Supported styles | p. 333 |
| Skinnability | p. 338 |
| Solved mysteries | p. 339 |
| Reasons for subclassing the List, ComboBox, and DataGrid components | p. 347 |
| The DateChooser and DateField Components | p. 349 |
| Minimal example of the DataChooser and DataField components | p. 350 |
| A richer example | p. 351 |
| Supported styles | p. 360 |
| Skinnability | p. 363 |
| Solved mysteries | p. 366 |
| Reasons for subclassing the DataChooser and DataField components | p. 369 |
| The Loader, ScrollPane, and ProgressBar Components | p. 371 |
| Minimal examples | p. 372 |
| Combined examples | p. 381 |
| Supported styles | p. 387 |
| Skinnability | p. 389 |
| Solved mysteries | p. 392 |
| Reasons for subclassing | p. 393 |
| The Menu and MenuBar Components | p. 395 |
| Minimal examples | p. 396 |
| Richer examples | p. 399 |
| Supported styles | p. 409 |
| Skinnability | p. 414 |
| Solved mysteries | p. 417 |
| Reasons for subclassing the Menu and the MenuBar components | p. 424 |
| The NumericStepper Component | p. 427 |
| Minimal example of the NumericStepper component | p. 428 |
| Styles supported by the NumericStepper component | p. 431 |
| Skinning the NumericStepper component | p. 433 |
| Solved mysteries | p. 435 |
| Reasons for subclassing the NumericStepper component | p. 437 |
| The TextArea, TextInput, and Label Components | p. 439 |
| Minimal example | p. 440 |
| Richer example of the TextInput and TextArea components | p. 446 |
| Supported styles | p. 448 |
| Solved mysteries | p. 450 |
| Reasons for subclassing the Label, TextInput, and TextArea components | p. 456 |
| The Tree Component | p. 459 |
| Minimal example of the Tree component | p. 460 |
| Supported styles | p. 465 |
| Solved mysteries | p. 470 |
| Reasons for subclassing the Tree component | p. 480 |
| The Window and Alert Components | p. 483 |
| Minimal example of the Window and Alert components | p. 484 |
| Managing the content of a Window instance | p. 490 |
| Supported styles | p. 495 |
| Skinning the Window and Alert components | p. 499 |
| Reasons for subclassing the Window and Alert components | p. 505 |
| Handling the Scrollbars | p. 507 |
| Minimal example of the UIScrollBar component | p. 508 |
| Customizing the scrollbars inside a component | p. 510 |
| Conclusion | p. 519 |
| Appendixes | p. 521 |
| Locating the Source Code of the Component Architecture | p. 523 |
| If you are a Windows user | p. 524 |
| If you are a Mac user | p. 525 |
| FLA source files | p. 525 |
| Link them | p. 526 |
| Transitions and Easing Classes | p. 529 |
| Parameters common to all of the transition types | p. 530 |
| Transition-specific parameters | p. 532 |
| Example of a transition parameters object | p. 533 |
| Index | p. 535 |
| Table of Contents provided by Ingram. All Rights Reserved. |