Although some ActionScript projects may appear a bit daunting at first glance, each one is quite manageable when you can break it down into parts. While it is true that applications must function as a whole, it is also true that a well-designed application can be developed in stages and in discrete units. The creative spark that sets a project in motion is typically in the form of a gestalt?a unified vision or idea for the entire application. However, the execution of the idea generally involves analysis?breaking apart the whole into smaller, more manageable parts.
In this chapter, you will create a simple Flash movie using ActionScript alone to create all the elements (in other words, no author-time movie clips or buttons are placed on the Stage). To get a feel for how to analyze a task, you will create this movie in five stages:
Create a single circle that moves around and bounces off the sides of a rectangle.
Use the same algorithms from the first stage, but create a component that bounces around within a rectangle.
Create a movie clip on the main timeline and fill that movie clip with multiple instances of the circle component. Also, modify the circle component so that the circles bounce not only off the sides of the rectangle but also off each other.
Create a button component and add instances of the button component to the movie so that the user can control the position, scale, and rotation of the movie clip containing the circle component instances. Use a table to position the buttons.
Create an XML document and load that document into the Flash movie. Use the data from the XML document to determine the movie's parameters, such as the number of circles; the size, color, and velocity of the circles; and the size of the rectangle within which the circles bounce.
Admittedly, it is unlikely that you will add this Flash movie to your own web site to show off your ActionScript prowess. However, in this chapter, you get the opportunity to become familiar with some of the concepts and techniques that are used throughout some of the recipes in the rest of this book, including:
Creating custom components
Using the getNewDepth( ) method to ensure that graphical object instances have unique depths
Working with the custom drawing methods
Using runtime-generated text
Loading XML data
The completed files can be downloaded from http://www.person13.com/ascb.