What's the point? What advantages does it have over just drawing the images manually?
I can create a menu background.
Then create buttons.
Then make those buttons children of the menu background.
Then I can hide the menu, and the children hide.
Or I can fade the menu out, and the children fade.
Since all of this works with the animation system, I can tell the animation system that I want the menu to fade, and that I want it to take one second. Then I can poll the animation system to find out when the animation has completed, at which point I can start the game.
Alternatively, or simultaneously, I could tell the animation system to move the menu background from center screen to offscreen. And once again, find out when this action completes.
And these things happen simulataneously to the menu's buttons because they are children of the menu. And I don't have to do anything beyond attaching them to the menu for it to work.
Calling one function updates the animation. Calling another causes all the sprites to draw.
It's like the BOB and AniBOB systems in my Lego game, but more sophisticated.
Yeah, you could make a monster class, and give it an image pointer. But then you'd have to set up all the stuff for keeping track of their positions, their alpha, and animate everything manually. Also, if you have both monsters and bullets, now you have to keep track of the position, color, alpha, hidden state, rotation, scale etc for both. So you have to add all those fields again.
This saves you a lot of work. Now when you create a monster, you just give it a stprite field, and any miscellaenous fields it needs for managing health and stuff. All the position and appearance stuff is all handled by the sprite class. And the animation class handles all the animation for you. You'd have to write an animation system otherwise, and would it have single shot, ping pong, looped, one shot ping poing, and be able to play animations in forward and reverse, and handle moving things in sine waves and accelerating/decelerating them? It might. But that's a ton of work to get right. It's taken me two weeks just to port it and get all the interfaces designed right for Max, and that doesn't count all the time it took to write in the first place. Probably take you like a month to do it. And there's all that annoying rotation/scaling math to handle the parent child stuff. You wanna do that? I don't. :-) But I had to.