3.2. Specifying RGB Values
Problem
You want to create an RGB value
to use with setRGB( )
based on the red, green, and blue part values.
Solution
Use the bitshift left and
bitwise
OR
operators.
Discussion
The easiest way to combine individual red, green, and blue components
into a single RGB value is to use bitwise operations. Simply shift
the red value left by 16 bits and the green value left by 8 bits,
then combine them with the blue value using the bitwise
OR
operator, as follows:
red = 100;
green = 100;
blue = 100;
rgb = (red << 16) | (green << 8) | (blue);
// Create the Color
object.
my_color = new Color(myMovieClip);
// Set the RGB color.
my_color.setRGB(rgb);
The bitshift left operator (<<
) effectively
multiplies a number by two for each bit position that the number is
shifted (this is similar to how shifting a decimal number one decimal
place to the left effectively multiplies it by 10). In this context,
the bitwise OR
operator (|
)
essentially concatenates the shifted numbers together. Therefore,
assuming that red
, green
, and
blue
are each in the range of 0 to 255, the
following:
rgb = (red << 16) | (green << 8) | (blue);
is equivalent to:
rgb = (red * Math.pow(2,16)) + (green * Math.pow(2,8)) + blue;
or:
rgb = (red * 65536) + (green * 256) + blue;
In practice, it is often easier
to use Color.setTransform(
)—
in which the red, green, and blue components are
specified as separate properties of a transform object—to alter
the targeted clip’s color. Furthermore,
setTransform( )
allows ...
Get Actionscript Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.