| | Copyright |
| | Preface |
| | | What's Not in This Book |
| | | Flash Naming Conventions |
| | | The Code |
| | | Typographical Conventions |
| | | We'd Like to Hear from You |
| | | Acknowledgments |
|
| | Part I: Local Recipes |
| | | Chapter 1. ActionScript Basics |
| | | Introduction |
| | | Recipe 1.1. Using Mathematical Operators |
| | | Recipe 1.2. Checking Equality or Comparing Values |
| | | Recipe 1.3. Performing Actions Conditionally |
| | | Recipe 1.4. Performing Complex Conditional Testing |
| | | Recipe 1.5. Repeating an Operation Many Times |
| | | Recipe 1.6. Performing an Action Once per Frame Update |
| | | Recipe 1.7. Repeating a Task at Timed Intervals |
| | | Recipe 1.8. Creating Reusable Code |
| | | Recipe 1.9. Generalizing a Function to Enhance Reusability |
| | | Recipe 1.10. Exiting a Function |
| | | Recipe 1.11. Obtaining the Result of a Function |
| | | Recipe 1.12. Avoiding Conflicting Variables |
| | | Recipe 1.13. Reusing and Organizing Code in Multiple Movies |
|
| | | Chapter 2. Runtime Environment |
| | | Introduction |
| | | Recipe 2.1. Detecting the Player Version |
| | | Recipe 2.2. Detecting the Operating System |
| | | Recipe 2.3. Checking the System Language |
| | | Recipe 2.4. Detecting Display Settings |
| | | Recipe 2.5. Scaling the Movie |
| | | Recipe 2.6. Changing the Alignment |
| | | Recipe 2.7. Detecting the Device's Audio Capabilities |
| | | Recipe 2.8. Prompting the User to Change Player Settings |
| | | Recipe 2.9. Hiding the Flash Player's Menu Items |
| | | Recipe 2.10. Enhancing Standalone Projectors |
| | | Recipe 2.11. Setting the Dimensions of a Projector |
| | | Recipe 2.12. Specifying Where on Screen a Projector Opens |
|
| | | Chapter 3. Color |
| | | Introduction |
| | | Recipe 3.1. Setting the Color of a Movie Clip |
| | | Recipe 3.2. Specifying RGB Values |
| | | Recipe 3.3. Decoding an RGB Value |
| | | Recipe 3.4. Setting the RGB Relative to Its Current Value |
| | | Recipe 3.5. Tinting a Movie Clip's Color |
| | | Recipe 3.6. Setting a Movie Clip's Transparency |
| | | Recipe 3.7. Transforming a Movie Clip's Current Color |
| | | Recipe 3.8. Restoring a Movie Clip's Original Color |
| | | Recipe 3.9. Controlling a Movie Clip's Color with Sliders |
|
| | | Chapter 4. Drawing and Masking |
| | | Introduction |
| | | Recipe 4.1. Drawing a Line |
| | | Recipe 4.2. Drawing a Curve |
| | | Recipe 4.3. Drawing a Rectangle |
| | | Recipe 4.4. Drawing a Rounded Rectangle |
| | | Recipe 4.5. Drawing a Circle |
| | | Recipe 4.6. Drawing an Ellipse |
| | | Recipe 4.7. Drawing a Triangle |
| | | Recipe 4.8. Drawing Regular Polygons |
| | | Recipe 4.9. Filling a Shape with a Solid or Translucent Color |
| | | Recipe 4.10. Filling a Shape with a Gradient |
| | | Recipe 4.11. Filling a Shape with a Complex Gradient |
| | | Recipe 4.12. Scripting Masks |
|
| | | Chapter 5. Numbers and Math |
| | | Introduction |
| | | Recipe 5.1. Representing Numbers in Different Bases |
| | | Recipe 5.2. Converting Between Different Number Systems |
| | | Recipe 5.3. Rounding Numbers |
| | | Recipe 5.4. Inserting Leading or Trailing Zeros |
| | | Recipe 5.5. Formatting Numbers for Display |
| | | Recipe 5.6. Formatting Currency Amounts |
| | | Recipe 5.7. Generating a Random Number |
| | | Recipe 5.8. Simulating a Coin Flip |
| | | Recipe 5.9. Simulating Dice |
| | | Recipe 5.10. Simulating Playing Cards |
| | | Recipe 5.11. Generating a Unique Number |
| | | Recipe 5.12. Converting Angle Measurements |
| | | Recipe 5.13. Calculating the Distance Between Two Points |
| | | Recipe 5.14. Determining Points Along a Circle |
| | | Recipe 5.15. Converting Between Units of Measurement |
| | | Recipe 5.16. Calculating Asset Appreciation (Future Value) |
| | | Recipe 5.17. Calculating Retirement Savings |
| | | Recipe 5.18. Calculating the Loan (Mortgage) You Can Afford |
| | | Recipe 5.19. Calculating Loan Amortization or Annuities |
|
| | | Chapter 6. Arrays |
| | | Introduction |
| | | Recipe 6.1. Adding Elements to the Start or End of an Array |
| | | Recipe 6.2. Looping Through an Array |
| | | Recipe 6.3. Searching for Matching Elements in an Array |
| | | Recipe 6.4. Removing Elements |
| | | Recipe 6.5. Inserting Elements in the Middle of an Array |
| | | Recipe 6.6. Converting a String to an Array |
| | | Recipe 6.7. Converting an Array to a String |
| | | Recipe 6.8. Creating a Separate Copy of an Array |
| | | Recipe 6.9. Storing Complex or Multidimensional Data |
| | | Recipe 6.10. Sorting or Reversing an Array |
| | | Recipe 6.11. Implementing a Custom Sort |
| | | Recipe 6.12. Creating an Associative Array |
| | | Recipe 6.13. Reading Elements of an Associative Array |
|
| | | Chapter 7. Movie Clips |
| | | Introduction |
| | | Recipe 7.1. Referring to Movie Clips via ActionScript |
| | | Recipe 7.2. Targeting Movie Clips with Dynamic Names |
| | | Recipe 7.3. Affecting Playback |
| | | Recipe 7.4. Reversing Playback |
| | | Recipe 7.5. Using Movie Clips as Buttons |
| | | Recipe 7.6. Defining Hit Areas for Movie Clips |
| | | Recipe 7.7. Checking for Mouseover |
| | | Recipe 7.8. Performing Repeated Actions on Movie Clips |
| | | Recipe 7.9. Fading a Movie Clip |
| | | Recipe 7.10. Discovering Nested Movie Clips |
| | | Recipe 7.11. Getting Unique Depths |
| | | Recipe 7.12. Getting a Movie Clip's Boundaries |
| | | Recipe 7.13. Creating a Draggable Movie Clip |
| | | Recipe 7.14. Creating a Custom Mouse Pointer |
| | | Recipe 7.15. Checking for Overlapping Movie Clips (Performing Hit Tests) |
| | | Recipe 7.16. Changing Stacking Order |
| | | Recipe 7.17. Converting Between Coordinate Spaces |
| | | Recipe 7.18. Duplicating Movie Clips |
| | | Recipe 7.19. Adding Movie Clips from the Library with ActionScript |
|
| | | Chapter 8. Text |
| | | Introduction |
| | | Recipe 8.1. Referring to a Text Field via ActionScript |
| | | Recipe 8.2. Creating a Text Field |
| | | Recipe 8.3. Creating an Outline Around a Text Field |
| | | Recipe 8.4. Creating a Background for a Text Field |
| | | Recipe 8.5. Making a User Input Field |
| | | Recipe 8.6. Making a Password Input Field |
| | | Recipe 8.7. Filtering Text Input |
| | | Recipe 8.8. Restricting the Maximum Field Length |
| | | Recipe 8.9. Displaying Dynamic Text at Runtime |
| | | Recipe 8.10. Displaying HTML-Formatted Text |
| | | Recipe 8.11. Condensing Whitespace |
| | | Recipe 8.12. Sizing Text Fields to Fit Contents |
| | | Recipe 8.13. Scrolling Text with the ScrollBar Component |
| | | Recipe 8.14. Scrolling Text Programmatically |
| | | Recipe 8.15. Responding to Scroll Events |
| | | Recipe 8.16. Formatting Existing Text |
| | | Recipe 8.17. Formatting User-Input Text |
| | | Recipe 8.18. Formatting a Portion of a Text Field |
| | | Recipe 8.19. Setting a Text Field's Font |
| | | Recipe 8.20. Embedding Fonts |
| | | Recipe 8.21. Creating Text That Can Be Rotated |
| | | Recipe 8.22. Displaying Unicode Text |
| | | Recipe 8.23. Assigning Focus to a Text Field |
| | | Recipe 8.24. Selecting Text with ActionScript |
| | | Recipe 8.25. Setting the Insertion Point in a Text Field |
| | | Recipe 8.26. Responding When Text Is Selected or Deselected |
| | | Recipe 8.27. Responding to User Text Entry |
| | | Recipe 8.28. Adding a Hyperlink to Text |
|
| | | Chapter 9. Strings |
| | | Introduction |
| | | Recipe 9.1. Joining Strings |
| | | Recipe 9.2. Using Quotes and Apostrophes in Strings |
| | | Recipe 9.3. Inserting Special Whitespace Characters |
| | | Recipe 9.4. Searching for a Substring |
| | | Recipe 9.5. Extracting a Substring |
| | | Recipe 9.6. Matching Patterns with Regular Expressions |
| | | Recipe 9.7. Looking for a Pattern Match |
| | | Recipe 9.8. Parsing a String into Words |
| | | Recipe 9.9. Removing and Replacing Characters |
| | | Recipe 9.10. Processing One Character at a Time |
| | | Recipe 9.11. Converting Case |
| | | Recipe 9.12. Trimming Whitespace |
| | | Recipe 9.13. Reversing a String by Word or by Letter |
| | | Recipe 9.14. Converting Between Strings and Unicode or ASCII |
|
| | | Chapter 10. Dates and Times |
| | | Introduction |
| | | Recipe 10.1. Finding the Current Date and Time |
| | | Recipe 10.2. Retrieving the Day or Month Name |
| | | Recipe 10.3. Formatting the Date and Time |
| | | Recipe 10.4. Formatting Milliseconds as Minutes and Seconds |
| | | Recipe 10.5. Converting Between DMYHMSM and Epoch Milliseconds |
| | | Recipe 10.6. Calculating Elapsed Time or Intervals Between Dates |
| | | Recipe 10.7. Parsing a Date from a String |
| | | Recipe 10.8. Creating Timers and Clocks |
|
| | | Chapter 11. Forms |
| | | Introduction |
| | | Recipe 11.1. Adding UI Components at Runtime |
| | | Recipe 11.2. Positioning Form Elements |
| | | Recipe 11.3. Adding Menus to a Form |
| | | Recipe 11.4. Making Dependent Menus |
| | | Recipe 11.5. Resizing Menus to Fit Their Contents |
| | | Recipe 11.6. Detecting the Selected Menu Items |
| | | Recipe 11.7. Adding Radio Buttons to a Group |
| | | Recipe 11.8. Aligning Radio Buttons Automatically |
| | | Recipe 11.9. Getting the Selected Radio Button Value |
| | | Recipe 11.10. Adding Checkboxes to a Form |
| | | Recipe 11.11. Getting Checkbox Values |
| | | Recipe 11.12. Assembling an Advanced Form |
| | | Recipe 11.13. Submitting a Form |
| | | Recipe 11.14. Validating Form Input |
| | | Recipe 11.15. Alerting Users to Validation Errors |
| | | Recipe 11.16. Making a Multipage Form |
| | | Recipe 11.17. Submitting a Multipage Form |
| | | Recipe 11.18. Validating a Multipage Form |
| | | Recipe 11.19. Transmitting Data Securely |
| | | Recipe 11.20. Prepopulating a Form |
| | | Recipe 11.21. Customizing the Tab Order |
| | | Recipe 11.22. Using Tables to Arrange Form Elements |
| | | Recipe 11.23. Creating Auto-Complete Text Fields |
| | | Recipe 11.24. Customizing a Component's Appearance |
| | | Recipe 11.25. Customizing All Components' Appearances |
|
| | | Chapter 12. Objects and Custom Components |
| | | Introduction |
| | | Recipe 12.1. Using Methods and Properties of Built-in Objects |
| | | Recipe 12.2. Creating an Instance of a Class |
| | | Recipe 12.3. Adding Properties to an Object Instance |
| | | Recipe 12.4. Adding Custom Methods to an Object Instance |
| | | Recipe 12.5. Creating a Custom Class |
| | | Recipe 12.6. Creating Smart Getter/Setter Properties |
| | | Recipe 12.7. Defining Read-Only Properties |
| | | Recipe 12.8. Creating Subclasses |
| | | Recipe 12.9. Implementing Subclass Versions of Superclass Methods |
| | | Recipe 12.10. Listening for Events |
| | | Recipe 12.11. Adding Listeners to Custom Classes |
| | | Recipe 12.12. Creating a Component That Subclasses MovieClip |
| | | Recipe 12.13. Program: Color Selector Component |
|
| | | Chapter 13. Programming Sound |
| | | Introduction |
| | | Recipe 13.1. Creating an Object to Control Sound |
| | | Recipe 13.2. Attaching Sounds at Runtime |
| | | Recipe 13.3. Playing and Stopping a Sound |
| | | Recipe 13.4. Getting Playback Time |
| | | Recipe 13.5. Looping a Sound |
| | | Recipe 13.6. Setting In and Out Points |
| | | Recipe 13.7. Pausing and Resuming a Sound |
| | | Recipe 13.8. Performing Actions When a Sound Ends |
| | | Recipe 13.9. Queuing Sounds |
| | | Recipe 13.10. Adding Sounds to Buttons and UI Components |
| | | Recipe 13.11. Setting the Volume of a Sound |
| | | Recipe 13.12. Controlling the Panning of a Sound |
| | | Recipe 13.13. Creating Advanced Stereo Panning Effects |
| | | Recipe 13.14. Fading In a Sound |
| | | Recipe 13.15. Fading Out a Sound |
| | | Recipe 13.16. Program: A Sound Controller Component |
|
|
| | Part II: Remote Recipes |
| | | Chapter 14. FlashCom Server |
| | | Introduction |
| | | Recipe 14.1. Creating a New FlashCom Application |
| | | Recipe 14.2. Connecting to the FlashCom Server |
| | | Recipe 14.3. Adding a Video Object at Runtime |
| | | Recipe 14.4. Capturing and Displaying Video from a Web Cam |
| | | Recipe 14.5. Capturing and Playing Audio from a Microphone |
| | | Recipe 14.6. Controlling FlashCom Audio |
| | | Recipe 14.7. Subscribing to Audio/Video Content |
| | | Recipe 14.8. Creating Playlists |
| | | Recipe 14.9. Recording and Publishing Video and Audio |
| | | Recipe 14.10. Publishing Live Content |
| | | Recipe 14.11. Pausing and Resuming a Net Stream |
| | | Recipe 14.12. Fast-Forwarding and Rewinding a Net Stream |
| | | Recipe 14.13. Seeking Relative to the Total Stream Length |
| | | Recipe 14.14. Implementing Server-Side ActionScript |
| | | Recipe 14.15. Tracking Clients Connected to the Application |
| | | Recipe 14.16. Invoking Server-Side Functions from the Client Movie |
| | | Recipe 14.17. Invoking Client-Side Functions from the Server |
|
| | | Chapter 15. Loading Assets |
| | | Introduction |
| | | Recipe 15.1. Loading an External SWF |
| | | Recipe 15.2. Loading an External SWF from a Trusting Domain |
| | | Recipe 15.3. Loading an External JPEG Image |
| | | Recipe 15.4. Loading an External Image (All Formats) |
| | | Recipe 15.5. Loading an External MP3 Sound |
| | | Recipe 15.6. Loading Remote Content by Proxy |
| | | Recipe 15.7. Determining if an Asset Is Loaded |
| | | Recipe 15.8. Getting the Percentage of an Asset That Has Loaded |
| | | Recipe 15.9. Monitoring Load Progress Using a Progress Bar Component |
| | | Recipe 15.10. Monitoring Load Progress Without a Progress Bar Component |
| | | Recipe 15.11. Performing Actions When the Asset Is Loaded |
| | | Recipe 15.12. Hiding the Graphics and Text for a Progress Bar |
|
| | | Chapter 16. Storing Persistent Information |
| | | Introduction |
| | | Recipe 16.1. Storing and Retrieving Locally Persistent Information |
| | | Recipe 16.2. Adding Data to a Client-Side Shared Object |
| | | Recipe 16.3. Reading Values from a Client-Side Shared Object |
| | | Recipe 16.4. Saving a Local Shared Object |
| | | Recipe 16.5. Sharing Information Between Movies Within the Same Domain |
| | | Recipe 16.6. Storing Persistent Data on the Server |
| | | Recipe 16.7. Saving Remote Shared Object Data |
| | | Recipe 16.8. Checking for Updates to Remote Shared Objects |
| | | Recipe 16.9. Reading Values from a Server-Side Shared Object |
| | | Recipe 16.10. Adding Data to a Server-Side Shared Object |
|
| | | Chapter 17. Communicating with Other Movies |
| | | Introduction |
| | | Recipe 17.1. Communicating with Other Movieson the Same Computer |
| | | Recipe 17.2. Sending Data Using Local Connections |
| | | Recipe 17.3. Validating Receipt of Communication Over a Local Connection |
| | | Recipe 17.4. Accepting Communications from Other Domains |
| | | Recipe 17.5. Communicating Between Movies on Different Computers |
| | | Recipe 17.6. Broadcasting Data to Remote Shared Object Clients |
|
| | | Chapter 18. Sending and Loading Variables |
| | | Introduction |
| | | Recipe 18.1. Loading Variables from a Text File |
| | | Recipe 18.2. Loading Variables from a Server-Side Script |
| | | Recipe 18.3. Checking Load Progress |
| | | Recipe 18.4. Sending Data to a Server-Side Script |
| | | Recipe 18.5. Sending Variables and Handling a Returned Result |
|
| | | Chapter 19. XML |
| | | Introduction |
| | | Recipe 19.1. Understanding XML Structure (Reading and Writing XML) |
| | | Recipe 19.2. Creating an XML Object |
| | | Recipe 19.3. Adding Elements to an XML Object |
| | | Recipe 19.4. Adding Text Nodes to an XML Object |
| | | Recipe 19.5. Creating an XML Object from an Array |
| | | Recipe 19.6. Adding Attributes to an XML Element |
| | | Recipe 19.7. Reading Elements in an XML Tree |
| | | Recipe 19.8. Finding Elements by Name |
| | | Recipe 19.9. Reading Text Nodes and Their Values |
| | | Recipe 19.10. Reading an Element's Attributes |
| | | Recipe 19.11. Loading XML |
| | | Recipe 19.12. Removing Extra Whitespace from XML Objects |
| | | Recipe 19.13. Sending XML |
| | | Recipe 19.14. Sending XML Data and Receiving a Response |
| | | Recipe 19.15. Searching XML |
| | | Recipe 19.16. Using XML Data to Initialize a Movie |
|
| | | Chapter 20. Flash Remoting |
| | | Introduction |
| | | Recipe 20.1. Establishing a Connection via Flash Remoting |
| | | Recipe 20.2. Configuring Flash Remoting for ColdFusion |
| | | Recipe 20.3. Configuring Flash Remoting for .NET |
| | | Recipe 20.4. Configuring Flash Remoting for J2EE |
| | | Recipe 20.5. Configuring Flash Remoting for PHP or Perl |
| | | Recipe 20.6. Invoking a Remote Function on a Service |
| | | Recipe 20.7. Handling Flash Remoting Results |
| | | Recipe 20.8. Distinguishing Among Results from Multiple Calls to a Single Service |
| | | Recipe 20.9. Calling ASP.NET Functions from Flash |
| | | Recipe 20.10. Calling ColdFusion Functions from Flash |
| | | Recipe 20.11. Passing Named Parameters to ColdFusion Component Methods |
| | | Recipe 20.12. Passing Complex Parameters to ColdFusion Component Methods |
| | | Recipe 20.13. Calling Java or JSP Functions from Flash |
| | | Recipe 20.14. Transmitting Custom Datatypes to a Flash Remoting Back End |
| | | Recipe 20.15. Receiving Typed Objects with ColdFusion |
| | | Recipe 20.16. Receiving Typed Objects with ASP.NET |
| | | Recipe 20.17. Receiving Typed Objects with Java |
| | | Recipe 20.18. Returning Typed Objects from ColdFusion |
| | | Recipe 20.19. Returning Typed Objects from ASP.NET |
| | | Recipe 20.20. Returning Typed Objects from Java |
| | | Recipe 20.21. Writing Server-Side Functions in ActionScript |
| | | Recipe 20.22. Querying a Database with Server-Side ActionScript |
| | | Recipe 20.23. Making HTTP Requests with Server-Side ActionScript |
| | | Recipe 20.24. Consuming Web Services with Flash Remoting for .NET or ColdFusion |
|
| | | Chapter 21. Recordsets |
| | | Introduction |
| | | Recipe 21.1. Creating Recordsets |
| | | Recipe 21.2. Reading Recordsets |
| | | Recipe 21.3. Filtering Recordsets |
| | | Recipe 21.4. Sorting Recordsets by a Single Column |
| | | Recipe 21.5. Populating Menu Components |
| | | Recipe 21.6. Using Recordsets with DataGrids |
|
|
| | Part III: Applications |
| | | Chapter 22. Building a Flash Paint Application |
| | | Section 22.1. Planning the Application |
| | | Section 22.2. Building the Components |
| | | Section 22.3. Assembling the Flash Paint Application |
| | | Section 22.4. Using Flash Paint |
|
| | | Chapter 23. Creating a Simple Animation in Stages |
| | | Section 23.1. Stage One |
| | | Section 23.2. Stage Two |
| | | Section 23.3. Stage Three |
| | | Section 23.4. Stage Four |
| | | Section 23.5. Stage Five |
| | | Section 23.6. Conclusion |
|
| | | Chapter 24. Video Chat/Message Center |
| | | Section 24.1. Developing the Application Overview |
| | | Section 24.2. Creating the Server-Side Application |
| | | Section 24.3. Creating the Calling Client |
| | | Section 24.4. Creating the Administrator Client |
| | | Section 24.5. Putting It All Together |
|
| | | Chapter 25. Image Viewer/Slideshow |
| | | Section 25.1. Planning the Application Design |
| | | Section 25.2. Beginning the Application |
| | | Section 25.3. Creating the Components |
| | | Section 25.4. Putting Together the Application |
| | | Section 25.5. Wrapping It Up |
|
| | | Chapter 26. Creating an MP3 Jukebox |
| | | Section 26.1. Creating an Application Overview |
| | | Section 26.2. Developing the MP3 Selectors |
| | | Section 26.3. Developing the Jukebox Application |
| | | Section 26.4. Wrapping It Up |
|
| | | Chapter 27. A Personalized My Page Application |
| | | Section 27.1. Formulating the Application Overview |
| | | Section 27.2. Creating the Framework |
| | | Section 27.3. Creating Service Modules |
| | | Section 27.4. Putting It All Together |
| | | Section 27.5. Extending the Framework |
| | | Section 27.6. Wrapping It Up |
|
| | | Chapter 28. A Scheduler Program |
| | | Section 28.1. Designing the Application Structure |
| | | Section 28.2. Making the Components |
| | | Section 28.3. Putting the Application Together |
| | | Section 28.4. Making the Scheduler Application Available Online |
| | | Section 28.5. Using LoadVars and XML |
| | | Section 28.6. Wrapping It Up |
|
|
| | Appendix A. Unicode Escape Sequences for Latin 1 Characters |
| | Colophon |
| | Index |