moock.org is supported in part by


May 30, 2007

Chapter 24, Paragraphs 1-6, Essential ActionScript 3.0

Here are the first 6 paragraphs of Chapter 24 of Essential ActionScript 3.0

24. Programmatic Animation

This chapter discusses the basic techniques for creating animation with ActionScript. It focuses on integrating animation code with the Flash runtime’s automatic screen updates. It does not, however, cover advanced animation topics, such as programming physics-based motion, motion on a path, collision detection, bitmap animation effects, or color transformations.

No Loops

To create animation with ActionScript, we change visual content repeatedly over time, producing the illusion of movement. For example, to animate a TextField object horizontally across the screen, we would repeatedly increase, or decrease, its instance variable x. In some programming languages, the natural mechanism for repeatedly altering an instance variable is a loop statement. Consequently, programmers who are new to ActionScript might expect to create animation using a while loop, such as the one shown in the following code:

public class TextAnimation extends Sprite {
  public function TextAnimation () {
    // Create a TextField
    var t:TextField = new TextField();
    t.text          = "Hello";
    t.autoSize      = TextFieldAutoSize.LEFT;
    addChild(t);
// Update the TextField's horizontal position repeatedly, and stop // when it reaches x-coordinate 300 while (t.x <= 300) { t.x += 10; } } }

The preceding while loop increments a TextField object’s instance variable x repeatedly, but as an attempt to produce animation it has a fatal flaw—each time the body of the loop executes, the screen is not updated. With each iteration of the loop, the TextField’s horizontal location is updated, but the visual effect of that change is not rendered to the screen. The screen is rendered only after the last iteration of the loop has completed, and the TextAnimation constructor function exits. Hence, by the time the screen is rendered, the TextField is already situated at x-coordinate 300.

In ActionScript, loop statements cannot be used to produce animation. Remember, the screen can never be updated within a block of code. See “No Screen Updates within Code Blocks” in Chapter 23.

In ActionScript, animation is produced not with loops, but by repeatedly calling functions that make visual changes and then exit, allowing the screen to update. There are two mechanisms for repeatedly calling such functions: the Event.ENTER_FRAME event and the TimerEvent.TIMER event.

Posted by moock at May 30, 2007 12:11 AM