This is not just an upgrade to Moock's earlier book on ActionScript 2.0. If you have that book, getting this one will not be a waste of time as this book is a complete rewrite. This book covers ActionScript programming fundamentals in exhaustive detail with clarity and precision. It explores ActionScript from a programmer's perspective, but assumes no prior programming knowledge. If you have never programmed before, start with Chapter 1. It will guide you through the very basics of ActionScript, and explain terms like variable, method, class, and object. Then continue through the book sequentially. Each chapter builds on the previous chapter's concepts, introducing new topics in a single, prolonged narrative that will gradually build your ActionScript skills and understanding.
If you are a designer who simply wants to learn how to control animations in the Flash authoring tool, you probably don't need this book, and Adobe's documentation should be sufficient. Come back to this book when you want to learn how to add logic and programmatic behavior to your content. If you already have existing ActionScript experience, this book will help you fill in gaps in your knowledge, rethink important concepts in formal terms, and understand difficult subjects through plain language. This book is divided into three parts.
Part I, ActionScript From the Ground Up, provides exhaustive coverage of the core ActionScript language, covering object-oriented programming, classes, objects, variables, methods, functions, inheritance, datatypes, arrays, events, exceptions, scope, namespaces, and XML. Part I closes with a look at Flash Player's security architecture. This section consists of chapters 1 through 19.
Part II, Display and Interactivity, explores techniques for displaying content on screen and responding to input events. Topics covered include the Flash runtime display API, hierarchical event handling, mouse and keyboard interactivity, animation, vector graphics, bitmap graphics, text, and content loading operations. This section consists of chapters 20 through 28.
Part III, Applied ActionScript Topics, focuses on ActionScript code-production issues. Topics covered include combining ActionScript with assets created manually in the Flash authoring tool, using the Flex framework in Flex Builder 2, and creating a custom code library. This section consists of chapters 29 through 31.
This book closes with a walkthrough of a fully functional example program--a virtual zoo, the pieces of which have been discussed as examples in explanations of various aspects o ActionScript throughout the book up to this point. Noteworthy ActionScript-related topics that are not covered extensively in this book include MXML, the Flex framework, Flex Data Services, the Flash authoring tool's built-in components, Flash Media Server, Flash Remoting, and ActionScript's regular expression support. The detailed table of contents is as follows:
Part I. ACTIONSCRIPT FROM THE GROUND UP
1. Core Concepts
Tools for Writing ActionScript Code; Flash Client Runtime Environments; Compilation; Quick Review;Classes and Objects; Creating a Program;Packages; Defining a Class; Virtual Zoo Review; Constructor Methods; Creating Objects; Variables and Values; Constructor Parameters and Arguments; Expressions; Assigning One Variable's Value to Another; An Instance Variable for Our Pet; Instance Methods; Members and Properties;Virtual Zoo Review; Break Time;
2. Conditionals and Loops
Conditionals; Loops; Boolean Logic; Back to Classes and Objects;
3. Instance Methods Revisited
Omitting the this Keyword; Bound Methods; Using Methods to Examine and Modify an Object's State; Get and Set Methods; Handling an Unknown Number of Parameters; Up Next: Class-Level Information and Behavior;
4. Static Variables and Static Methods
Static Variables; Constants; Static Methods; Class Objects; C++ and Java Terminology Comparison; On to Functions;
5. Functions
Package-Level Functions; Nested Functions; Source-File-Level Functions; Accessing Definitions from Within a Function; Functions as Values; Function Literal Syntax; Recursive Functions; Using Functions in the Virtual Zoo Program ;Back to Classes;
6. Inheritance
A Primer on Inheritance; Overriding Instance Methods; Constructor Methods in Subclasses; Preventing Classes from Being Extended and Methods from Being Overridden; Subclassing Built-in Classes; The Theory of Inheritance; Abstract Not Supported; Using Inheritance in the Virtual Zoo Program; Virtual Zoo Program Code;It's Runtime;
7. Compiling and Running a Program
Compiling with the Flash Authoring Tool; Compiling with Flex Builder 2; Compiling with mxmlc; Compiler Restrictions; The Compilation Process and the Classpath; Strict-Mode Versus Standard-Mode Compilation; The Fun's Not Over;
8. Datatypes and Type Checking
Datatypes and Type Annotations;
Untyped Variables, Parameters, Return Values, and Expressions; Strict Mode's Three Special Cases; Warnings for Missing Type Annotations; Detecting Reference Errors at Compile Time; Casting; Conversion to Primitive Types; Default Variable Values; null and undefined; Datatypes in the Virtual Zoo; More Datatype Study Coming Up;
9. Interfaces
The Case for Interfaces; Interfaces and Multidatatype Classes; Interface Syntax and Use; Another Multiple-Type Example; More Essentials Coming;
10. Statements and Operators
Statements; Operators; Up Next: Managing Lists of Information;
11. Arrays
What Is an Array?; The Anatomy of an Array;Creating Arrays; Referencing Array Elements; Determining the Size of an Array; Adding Elements to an Array; Removing Elements from an Array; Checking the Contents of an Array with the toString( ) Method; Multidimensional Arrays;On to Events;
12. Events and Event Handling
ActionScript Event Basics; Accessing the Target Object; Accessing the Object That Registered the Listener; Preventing Default Event Behavior; Event Listener Priority; Event Listeners and Memory Management; Custom Events; Type Weakness in ActionScript's Event Architecture; Handling Events Across Security Boundaries; What's Next?;
13. Exceptions and Error Handling
The Exception-Handling Cycle; Handling Multiple Types of Exceptions; Exception Bubbling; The finally Block; Nested Exceptions; Control-Flow Changes in try/catch/finally; Handling a Built-in Exception; More Gritty Work Ahead;
14. Garbage Collection
Eligibility for Garbage Collection; Incremental Mark and Sweep; Disposing of Objects Intentionally; Deactivating Objects; Garbage Collection Demonstration; On to ActionScript Backcountry;
15. Dynamic ActionScript
Dynamic Instance Variables; Dynamically Adding New Behavior to an Instance; Dynamic References to Variables and Methods; Using Dynamic Instance Variables to Create Lookup Tables; Using Functions to Create Objects; Using Prototype Objects to Augment Classes; The Prototype Chain ;Onward!;
16. Scope
Global Scope; Class Scope; Static Method Scope; Instance Method Scope; Function Scope; Scope Summary; The Internal Details; Expanding the Scope Chain via the with Statement; On to Namespaces;
17. Namespaces
Namespace Vocabulary; ActionScript Namespaces; Creating Namespaces; Using a Namespace to Qualify Variable and Method Definitions; Qualified Identifiers;A Functional Namespace Example; Namespace Accessibility; Qualified-Identifier Visibility; Comparing Qualified Identifiers; Assigning and Passing Namespace Values; Open Namespaces and the use namespace Directive; Namespaces for Access-Control Modifiers; Applied Namespace Examples; Final Core Topics;
18. XML and E4X
Understanding XML Data as a Hierarchy; Representing XML Data in E4X; Creating XML Data with E4X; Accessing XML Data; Processing XML with for-each-in and for-in; Accessing Descendants; Filtering XML Data; Traversing XML Trees; Changing or Creating New XML Content; Loading XML Data; Working with XML Namespaces; Converting XML and XMLList to a String; Determining Equality in E4X; More to Learn;
19. Flash Player Security Restrictions
What's Not in This Chapter; The Local Realm, the Remote Realm, and Remote Regions; Security-Sandbox-Types; Security Generalizations Considered Harmful; Restrictions on Loading Content, Accessing Content as Data, Cross-Scripting, and Loading Data; Socket Security; Example Security Scenarios; Choosing a Local Security-Sandbox-Type; Distributor Permissions (Policy Files); Creator Permissions (allowDomain( )) ;Import Loading ;Handling Security Violations; Security Domains; Two Common Security-Related Development Issues; On to Part II;
Part II. DISPLAY AND INTERACTIVITY
20. The Display API and the Display List
Display API Overview; The Display List; Containment Events; Custom Graphical Classes; Go with the Event Flow;
21. Events and Display Hierarchies
Hierarchical Event Dispatch; Event Dispatch Phases; Event Listeners and the Event Flow; Using the Event Flow to Centralize Code; Determining the Current Event Phase; Distinguishing Events Targeted at an Object from Events Targeted at That Object's Descendants; Stopping an Event Dispatch; Event Priority and the Event Flow; Display-Hierarchy Mutation and the Event Flow Custom Events and the Event Flow; On to Input Events;
22. Interactivity
Mouse-Input Events; Focus Events; Keyboard-Input Events; Text-Input Events; Flash Player-Level Input Events; From the Program to the Screen;
23. Screen Updates
Scheduled Screen Updates; Post-Event Screen Updates; Redraw Region; Optimization with the Event.RENDER Event; Let's Make It Move!;
24. Programmatic Animation
No Loops; Animating with the ENTER_FRAME Event; Animating with the TimerEvent.TIMER Event; Choosing Between Timer and Event.ENTER_FRAME; A Generalized Animator; Velocity-Based Animation; Moving On to Strokes 'n' Fills ;
25. Drawing with Vectors
Graphics Class Overview; Drawing Lines; Drawing Curves; Drawing Shapes; Removing Vector Content; Example: An Object-Oriented Shape Library; From Lines to Pixels;
26. Bitmap Programming
The BitmapData and Bitmap Classes; Pixel Color Values; Creating a New Bitmap Image; Loading an External Bitmap Image; Examining a Bitmap; Modifying a Bitmap; Copying Graphics to a BitmapData Object; Applying Filters and Effects; Freeing Memory Used by Bitmaps; Words, Words, Words;
27. Text Display and Input
Creating and Displaying Text; Modifying a Text Field's Content; Formatting Text Fields; Fonts and Text Rendering; Missing Fonts and Glyphs; Determining Font Availability; Determining Glyph Availability; Embedded-Text Rendering; Text Field Input; Text Fields and the Flash Authoring Tool; Loading . . . Please Wait;
28. Loading External Display Assets
Using Loader to Load Display Assets at Runtime; Compile-Time Type-Checking for Runtime-Loaded Assets; Accessing Assets in Multiframe .swf Files; Instantiating a Runtime-Loaded Asset; Using Socket to Load Display Assets at Runtime; Removing Runtime Loaded .swf Assets; Embedding Display Assets at CompileTime; On to Part III;
Part III. APPLIED ACTIONSCRIPT TOPICS
29. ActionScript and the Flash Authoring Tool
The Flash Document; Timelines and Frames; Timeline Scripting; The Document Class; Symbols and Instances; Linked Classes for Movie Clip Symbols; Accessing Manually Created Symbol Instances; Accessing Manually Created Text; Programmatic Timeline Control; Instantiating Flash Authoring Symbols via ActionScript; Instance Names for Programmatically Created Display Objects; Linking Multiple Symbols to a Single Superclass; The Composition-Based Alternative to Linked Classes; Preloading Classes; Up Next: Using the Flex Framework;
30. A Minimal MXML Application
The General Approach; A Real UI Component Example; Sharing with Your Friends;
31. Distributing a Class Library
Sharing Class Source Files; Distributing a Class Library as a .swc File; Distributing a Class Library as a .swf File;
The great thing about this book is that besides covering the details of building a large scale application, it doesn't ignor small things like "With what do I compile an ActionScript program?", "What tools do I need?", "After I compile an ActionScript program, what exactly do I have?" Plenty of example code is shown throughout and the explanations are clearly written, so you shouldn't get lost if you read the book through sequentially. Highly recommended.