"Boing Boing Boing!"
Keith Peters's engaging and readable book on Flash 9, Actionscript 3.0 Animation is quite unusual for a programming techniques book. It assumes you know very little, but it ends up being an authoritative work of lasting value.
Notwithstanding the "3.0" in the title, this is the second edition of "Making things Move," updated for Actionscript 3.0. The first version sold very well, but I think the second edition will open up Flash to a much wider audience.
This is because Peters almost always gives you two or three ways of doing something, and this extends to whatever Flash development environment you have chosen. There are three ways you can write Actionscript 3 for Flash: The Flash IDE (which you get when you buy Adobe Flash), Flex Builder 2 (which you get when you buy Adobe Flex Builder) and the free Flex 2 SDK (which you get when you download Flex SDK free from the Adobe website.) I use the third environment, so I really appreciate that "Making Things Move" tells you how to set up "trace" for debugging in the free Flex SDK environment. Because of the popularity of Flash animation, and the fact that the book tells you how to use the free development environment (and the fact that Actionscript 3 is so great), I think this book will be both popular and influential.
So, I found nuts and bolts information in the very beginning that was probably worth the price of the book even if I didn't animate a single bouncing ball, but what's the rest of the book about? Three things that everyone learned (or should have learned) in school: trigonometry, physics and how to think about stuff on your own. And you get it an applied context that basically gives you everything you need to build, and to understand how to build, an interactive 2D or 3D game -- except fancy graphics, of course.
User interaction, moving objects around, collision detection (two or three different methods), how to use acceleration and velocity for springing and easing, billiard ball physics, how to make things walk (forward kinematics) and reach for stuff (reverse kinematics), plus rotate collide and move in 3 dimensions, it's all in the book. All completely comprehensible. Various ways of placing things randomly on the screen, how to bounce back after colliding, how to swarm objects and connect them to each other? All covered. Matrix math, Brownian motion? Covered and explained. About the only thing Peters doesn't give you is the rotation matrices for four-dimensional graphics, but to be perfectly fair, nobody else does either.
This book is a product of tons of experience and thoughtfulness. Each technique appears to be so simple -- certainly there isn't too much code in any one example -- and yet along with each technique, it seems like there's at least one little `gotcha' that Keith Peters tells you how to avoid. In other words, you can scan the book quickly to see what's in it, to see what's there and examine the formulas, and then when you go back and read it, you also benefit because you pick up one of these 'gotchas' or an explanation of why one way is better than doing it another way.
Will you find this review useful if I don't complain about something? Okay! Well, in the spaceship example in chapter 5, which uses the keyboard, nothing works unless you click on the window first. The book says nothing about this, or how to prevent it. Can you set the keyboard focus onto your movie without clicking the mouse on it? I wish I knew.
Less important, in nearly every code example in the book, the constructor of each document class calls an init() method, which Peters says is a recommended "best practice" I would like to know why this is a best practice, since it just makes the code (and the book) longer and (ok, just slightly) more time consuming to read.
Lastly, everyone knows (or will know after reading this book) there are two kinds of animation, frame-based and timer-based. What I never realized is that there's a third form, time-based animation, that's smoother and more accurate than either frame based or timer based. Plus, it's immune to the frame rate of the movie, the motion stays just as smooth and constant as you have intended it to be. I really appreciate the fact that the book brought this to my attention, but why did the author wait until page 505 to get around to it? No matter, you're crazy if you don't read every page, from the beginning of the forward ("This is a book about art"), right to the very end of the index ("zero, dividing by zero in Flash").
This book is packed with useful information from beginning to end and will give you many happy hours and things to do on long winter nights in front of your compute; the very last example in the book, slipped in as a final parting gift just before the recap of all the book's equations, tells how to add the "Boing" sound to the bounce of your bouncing ball, in just 3 lines of code.
If you don't have any books on Actionscript 3, I think this is probably the best one to start with until the Moock book comes out, if you have an interest in animation.