| Foreword | p. xi |
| Preface | p. xv |
| The ActionScript 2.0 Language | |
| ActionScript 2.0 Overview | p. 3 |
| ActionScript 2.0 Features | p. 3 |
| Features Introduced by Flash Player 7 | p. 5 |
| Flash MX 2004 Version 2 Components | p. 6 |
| ActionScript 1.0 and 2.0 in Flash Player 6 and 7 | p. 8 |
| Let's Go OOP | p. 12 |
| Object-Oriented ActionScript | p. 13 |
| Procedural Programming and Object-Oriented Programming | p. 13 |
| Key Object-Oriented Programming Concepts | p. 14 |
| But How Do I Apply OOP? | p. 19 |
| On with the Show! | p. 23 |
| Datatypes and Type Checking | p. 24 |
| Why Static Typing? | p. 30 |
| Type Syntax | p. 31 |
| Compatible Types | p. 36 |
| Built-in Dynamic Classes | p. 40 |
| Circumventing Type Checking | p. 41 |
| Casting | p. 45 |
| Datatype Information for Built-in Classes | p. 54 |
| ActionScript 2.0 Type Checking Gotchas | p. 55 |
| Up Next: Creating Classes--Your Own Datatypes! | p. 58 |
| Classes | p. 59 |
| Defining Classes | p. 59 |
| Constructor Functions (Take 1) | p. 64 |
| Properties | p. 65 |
| Methods | p. 81 |
| Constructor Functions (Take 2) | p. 112 |
| Completing the Box Class | p. 119 |
| Putting Theory into Practice | p. 123 |
| Authoring an ActionScript 2.0 Class | p. 124 |
| Class Authoring Quick Start | p. 124 |
| Designing the ImageViewer Class | p. 125 |
| ImageViewer Implementation (Take 1) | p. 129 |
| Using ImageViewer in a Movie | p. 134 |
| ImageViewer Implementation (Take 2) | p. 138 |
| ImageViewer Implementation (Take 3) | p. 146 |
| Back to the Classroom | p. 157 |
| Inheritance | p. 158 |
| A Primer on Inheritance | p. 158 |
| Subclasses as Subtypes | p. 162 |
| An OOP Chat Example | p. 163 |
| Overriding Methods and Properties | p. 166 |
| Constructor Functions in Subclasses | p. 193 |
| Subclassing Built-in Classes | p. 198 |
| Augmenting Built-in Classes and Objects | p. 201 |
| The Theory of Inheritance | p. 202 |
| Abstract and Final Classes Not Supported | p. 213 |
| Let's Try Inheritance | p. 214 |
| Authoring an ActionScript 2.0 Subclass | p. 215 |
| Extending ImageViewer's Capabilities | p. 215 |
| The ImageViewerDeluxe Skeleton | p. 216 |
| Adding setPosition() and setSize() Methods | p. 217 |
| Autosizing the Image Viewer | p. 218 |
| Using ImageViewerDeluxe | p. 223 |
| Moving Right Along | p. 223 |
| Interfaces | p. 224 |
| The Case for Interfaces | p. 224 |
| Interfaces and Multidatatype Classes | p. 226 |
| Interface Syntax and Use | p. 227 |
| Multiple Type Inheritance with Interfaces | p. 232 |
| Up Next, Packages | p. 236 |
| Packages | p. 238 |
| Package Syntax | p. 239 |
| Defining Packages | p. 244 |
| Package Access and the Classpath | p. 245 |
| Simulating Packages in ActionScript 1.0 | p. 248 |
| Just a Little More Theory | p. 248 |
| Exceptions | p. 249 |
| The Exception-Handling Cycle | p. 250 |
| Handling Multiple Types of Exceptions | p. 255 |
| Exception Bubbling | p. 264 |
| The finally Block | p. 268 |
| Nested Exceptions | p. 271 |
| Control Flow Changes in try/catch/finally | p. 275 |
| Limitations of Exception Handling in ActionScript 2.0 | p. 277 |
| From Concepts to Code | p. 280 |
| Application Development | |
| An OOP Application Framework | p. 283 |
| The Basic Directory Structure | p. 284 |
| The Flash Document (.fla file) | p. 284 |
| The Classes | p. 285 |
| The Document Timeline | p. 287 |
| The Exported Flash Movie (.swf file) | p. 289 |
| Projects in Flash MX Professional 2004 | p. 290 |
| Let's See It in Action! | p. 290 |
| Using Components with ActionScript 2.0 | p. 291 |
| Currency Converter Application Overview | p. 291 |
| Preparing the Flash Document | p. 292 |
| The CurrencyConverter Class | p. 295 |
| Handling Component Events | p. 308 |
| Components Complete | p. 315 |
| MovieClip Subclasses | p. 316 |
| The Duality of MovieClip Subclasses | p. 317 |
| Avatar: A MovieClip Subclass Example | p. 318 |
| Avatar: The Composition Version | p. 326 |
| Issues with Nested Assets | p. 327 |
| A Note on MovieClip Sub-subclasses | p. 330 |
| Curiouser and Curiouser | p. 331 |
| Distributing Class Libraries | p. 332 |
| Sharing Class Source Files | p. 332 |
| Sharing Classes Without Sharing Source Files | p. 338 |
| Solving Real OOP Problems | p. 346 |
| Design Pattern Examples in ActionScript 2.0 | |
| Introduction to Design Patterns | p. 349 |
| Bring on the Patterns | p. 351 |
| The Observer Design Pattern | p. 352 |
| Implementing Observer in ActionScript 2.0 | p. 354 |
| Logger: A Complete Observer Example | p. 360 |
| Memory Management Issues with Observer | p. 378 |
| Beyond Observer | p. 380 |
| The Singleton Design Pattern | p. 381 |
| Implementing Singleton in ActionScript 2.0 | p. 381 |
| The Singleton Pattern in the Logger Class | p. 383 |
| Singleton Versus Class Methods and Class Properties | p. 384 |
| A Warning Against Singletons as Globals | p. 385 |
| On to User Interfaces | p. 385 |
| The Model-View-Controller Design Pattern | p. 386 |
| The General Architecture of MVC | p. 388 |
| A Generalized MVC Implementation | p. 392 |
| An MVC Clock | p. 398 |
| Further Exploration | p. 421 |
| The Delegation Event Model | p. 423 |
| Structure and Participants | p. 423 |
| The Flow of Logic | p. 427 |
| Core Implementation | p. 427 |
| NightSky: A Delegation Event Model Example | p. 432 |
| Other Event Architectures in ActionScript | p. 442 |
| From Some Place to Some OtherPlace | p. 443 |
| Appendixes | |
| ActionScript 2.0 Language Quick Reference | p. 447 |
| Differences from ECMAScript Edition 4 | p. 478 |
| Index | p. 481 |
| Table of Contents provided by Ingram. All Rights Reserved. |