Recipe 3.7 Transforming a Movie Clip's Current Color

3.7.1 Problem

You want to modify a movie clip's color relative to the current color transformation, instead of relative to the author-time color values.

3.7.2 Solution

Use the getTransform( ) and setTransform( ) methods of the Color object that targets the movie clip.

3.7.3 Discussion

The Color.getTransform( ) method returns the transform object last applied to the targeted movie clip. For example, if you had previously applied a transform object that set the movie clip's alpha percentage to 42, getTransform( ) would return an object with the following values:

{ra: 100, rb: 0, ga: 100, gb: 0, ba: 100, bb: 0, aa: 42, ab: 0}

The transform object reflects changes made to a movie clip's color either at authoring time or at runtime. If you modify the color values using the Property inspector at authoring time, those values are indicated in the movie clip's transform object. You can make changes to a movie clip's color at runtime by using the setTransform( ) or setRGB( ) methods of its Color object, and you can adjust the movie clip's _alpha property separately. All runtime changes?not just the changes made using setTransform( )?are reflected in the transform object. If you have not applied any color changes at runtime or authoring time then getTransform( ) returns the following value (a neutral transform object):

{ra: 100, rb: 0, ga: 100, gb: 0, ba: 100, bb: 0, aa: 100, ab: 0}

You can modify the properties of the transform object returned by getTransform( ) and then apply the modifications using setTransform( ):

// Create the Color object.
my_color = new Color(myMovieClip);

// Get the transform object.
myTransformObject = my_color.getTransform(  );

// Set the green percentage of all colors within the movie clip to 50% of the current
// value. = 50;

// Apply the transform object.

The preceding example retains the previously applied transform values, with the exception of ga, which is set to 50. You can instead increment or decrement the properties relative to their current values:

// Get the transform object.
myTransformObject = my_color.getTransform(  );

// Increment the red, green, and blue offsets by 10 to brighten the object's colors.
myTransformObject.rb += 10; += 10; += 10;

// Set the transform object.

Transformations applied with setTransform( ) occur relative to the colors in the original movie clip symbol, independent of any previous transformations. In other words, the transformations are not cumulative. We simulated a cumulative transformation by basing the new transformation on the previous values, as returned by getTransform( ).

    Part I: Local Recipes
    Part II: Remote Recipes