Search code examples
actionscript-3flashflash-cs6

MovieClip alignment (a character with multiple states) without using a meta-MovieClip


I'm working on a game where there are 4 characters on screen, each with several different states and corresponding MovieClips so that my library looks a little something like this:

Character 1:
IdleAnimation
SleepAnimation
..
Character 2:
IdleAnimation
SleepAnimation
..

Each animation (provided by a 3rd party) has a different anchor point, so when character A is at position 100, 100 on screen and moves from the idle to sleep animation he suddenly jumps 20 pixels to the right due to the anchor point.

Usually I would store all the different states in one MovieClip in separate frames and manually adjust the position of each one til they matched up, however I am also trying to port this to Android and therefore must keep the number of children on screen at once to a minimum.

Is there anything else I can do other than store offset x and y values for each character and each animation, and simple set the x/y via code whenever their state changes?


Solution

  • To keep the numChildren down I guess you have no choice

    but to keep track of x- and y-offsets of the animations of each character

    stored perhaps in an Object variable of form { state: registration_point }.

    Then when changing states you can set the registration point

    through this method by Emanuel Feronato:

    http://www.emanueleferonato.com/2010/08/04/changing-a-movieclip-registration-point-on-the-fly-with-as3/

    An idea to try though is to simply place the registration point to the center of each animation state:

        var reg_x:Number = mc.width / 2;
        var reg_y:Number = mc.height / 2;