So, I'm playing with Flixel, which is making Flash games actually fun to work on. Here's what I've gotten done in an afternoon of fiddling with the included documentation and poking through the example source code (after the jump). Already it's a hundred times faster and cleaner than the vertical-shooter engine I wrote for Flash MX back in high school, and I've hardly done anything yet!
I always tend towards shoot-em-up games when experimenting with a new game engine. There's a couple reasons for that. First of all, I love shoot-em-ups. I never get tired of them. Now that Cave is finally porting their games to iPhone (and therefor to my iPad) I'm in bullet-curtained heaven. Secondly, shooters are pretty simple to implement. Enemy behaviors rarely stray outside fixed flight paths, bullets appear in clearly demarcated patterns, and there are no physics to speak of. Finally, I've written engines for these 2d games in several versions of Flash, javascript, and even a 3d engine or two.
Flixel is making it particularly easy to slide back into ActionScript and get some simple game mechanics up and running, though. Too many game engines try to remove coding from the process of game development; Flixel, by contrast, makes coding easy and sensible. Adam's extensions to Flash's Sprite class for FlxSprite make a lot of sense for on-screen game objects, and using a state manager to handle the game loop is so simple it had to be designed.
What I'd like to do next is see Game Programming Patterns expanded to handle some basic event loop / screen object hierarchies.