View Single Post
Nutrox's Avatar Nutrox Nutrox is offline Super Moderator 17 Creative Assets 2006-11-27 #37 Old  
034 - Colour Manipulation
Last edited by Nutrox : 2007-11-14 at 23:54.
 
Using the bit-shifting techniques that Codemonkey has covered allows you to quickly and easily manipulate colour values.

This first example demostrates how you can get the individual colour values from a RGB colour value:

ActionScript Code:
  1. var colour:Number = 0xFA802A;
  2.  
  3. var red:Number   = colour >> 16 & 255;
  4. var green:Number = colour >> 8 & 255;
  5. var blue:Number  = colour & 255;
  6.  
  7. trace( red   ); // 250
  8. trace( green ); // 128
  9. trace( blue  ); // 42
  10.  
  11. trace( red.toString(16)   ); // fa
  12. trace( green.toString(16) ); // 80
  13. trace( blue.toString(16)  ); // 2a
  14.  
If you want to construct a RGB colour value from red, green, and blue values then you can do this:

ActionScript Code:
  1. var red:Number   = 0x80;
  2. var green:Number = 0xFF;
  3. var blue:Number  = 0xCA;
  4.  
  5. var colour:Number = 0;
  6.  
  7. colour |= red   << 16;
  8. colour |= green << 8;
  9. colour |= blue;
  10.  
  11. trace( colour );              // 16711882
  12. trace( colour.toString(16) ); // 80ffca
  13.  
A quicker/cleaner way:

ActionScript Code:
  1. colour = (red << 16) | (green << 8) | blue;
The following functions will allow you to adjust the red, green, or blue colour value in a colour:

ActionScript Code:
  1. function setRed( colour:Number, value:Number ):Number
  2. {
  3.     colour = ( colour & 0x00FFFF ) | ( value << 16 );
  4.     return colour;
  5. }
  6.  
  7. function setGreen( colour:Number, value:Number ):Number
  8. {
  9.     colour = ( colour & 0xFF00FF ) | ( value << 8 );
  10.     return colour;
  11. }
  12.  
  13. function setBlue( colour:Number, value:Number ):Number
  14. {
  15.     colour = ( colour & 0xFFFF00 ) | value;
  16.     return colour;
  17. }
  18.  
  19. //
  20.  
  21. var colour:Number = 0x00FF00;
  22.  
  23. // Add some red to the colour.
  24. colour = setRed( colour, 0xDA );
  25.  
  26. // Add some blue to the colour.
  27. colour = setBlue( colour, 0x44 );
  28.  
  29. trace( colour.toString(16) ); // daff44
  30.  

&nbsp;