this works for me:

*/** @param factor is between 0 and 1 (if higher/lower, it will clip
correctly) */*
*public* *static* *function* mixColor(a:*Number*, b:*Number*, factor:*Number
*):*Number*
{
*if*(factor >= 1)
*return* a;

*if*(factor <= 0)
*return* b;

*var* fb:*Number* = 1-factor;

*return* ((((a & 0xFF0000)*factor)+((b & 0xFF0000)*fb)) & 0xFF0000) +
      ((((a & 0x00FF00)*factor)+((b & 0x00FF00)*fb)) & 0x00FF00) +
      ((((a & 0x0000FF)*factor)+((b & 0x0000FF)*fb)) & 0x0000FF);
}


2006/6/16, [EMAIL PROTECTED] <[EMAIL PROTECTED]>:

Hi Jeff,

Here's a class that will generate an array for N elements that blends
between two RGB values.

Example:
       import org.bespoke.color.ColorBlend;
       var myBlender:ColorBlend=new ColorBlend(0xFF0000,0x00FF00);

       //to get the RGBN value at 46% between the two...
       var resultColor:Number= myBlender.getRGBAt(.46);

       //get the blend in an array of 20 steps....
       var myRGBArray:Array=myBlender.getArrayOfLength(20);

Hope this helps,
Cheers,
t


//----------------------------------------------------
import flash.display.BitmapData;
import flash.geom.ColorTransform;
import flash.geom.Matrix;

class org.bespoke.color.ColorBlend extends Object{

       public var start_rgb:Number=0x000000;
       public var end_rgb:Number=0xFFFFFF;

       private var colorTransform:ColorTransform;
       private var matrix:Matrix;

       public var bmp:BitmapData;
       public var bmp_end:BitmapData;

       function ColorBlend(c1:Number,c2:Number){
               if(c1!=undefined){start_rgb=c1;}
               if(c2!=undefined){end_rgb=c2;}
               bmp=new BitmapData(1,1,true);
               bmp_end=new BitmapData(1,1,true);
               matrix=new Matrix();
               colorTransform=new ColorTransform();
       }

       function getRGBAt(n:Number):Number{
               //n should be a normalised float (0-1.0)
               // although the range -1.0 <=> 1.0 is valid

               bmp.setPixel(0,0,start_rgb);
               bmp_end.setPixel(0,0,end_rgb);
               colorTransform.alphaMultiplier=n;
               bmp.draw(bmp_end,matrix,colorTransform);
               return bmp.getPixel(0,0);
       }

       function getArrayOfLength(n:Number):Array
       {
               var result:Array=new Array();
                for(var i:Number=0;i<n;i++){
                        result.push(getRGBAt(i/n));
                       }
                       return result;
       }
}
//----------------------------------------------------
_______________________________________________
[email protected]
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com

_______________________________________________
[email protected]
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com

Reply via email to