Since the ColorTransform class is very enjoyable (and useful)"why don"t we play with it a little.
Browsing the web and in particular Flash sites, you"ll have come across some applications using a kind of fade-in/fade-out of the background from one colour to another.
I find it very intelligent as it allows to distinguish the sections of the site by their background colour.
I"ve written a class that shows how to execute this fading, here it is:
Code:
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.geom.ColorTransform;
import flash.display.Stage;
public class CambiaSfondo extends Sprite
{
private var _sprite:Sprite;
private var rosso1:Number=1;
private var verde1:Number=0;
private var blu1:Number=0;
private var rosso2:Number=0;
private var verde2:Number=.5;
private var blu2:Number=1;
private var speed:Number=0.1;
private var colors_array:Array;
public function CambiaSfondo()
{
initArray();
drawSprite();
addListeners();
}
public function initArray():void
{
colors_array=new Array('light-blue','purple','red','green',
'brown','blue','orange','yellow');
}
public function drawSprite():void
{
_sprite=new Sprite();
_sprite.graphics.beginFill(0xffffff,100);
_sprite.graphics.drawRect(0,0,stage.stageWidth,stage.stageHeight);
_sprite.graphics.endFill();
_sprite.buttonMode=true;
_sprite.useHandCursor=true;
addChild(_sprite);
}
public function addListeners():void
{
_sprite.addEventListener(Event.ENTER_FRAME, onEnterFrame);
_sprite.addEventListener(MouseEvent.CLICK,onClick);
}
public function reCall():void
{
_sprite.addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
public function onEnterFrame(event:Event):void
{
var arrR:Number=rosso2;
var dr:Number=rosso2-rosso1;
var ar:Number=dr*speed;
rosso1+=ar;
verde1+=(verde2-verde1)*speed;
blu1+=(blu2-blu1)*speed;
_sprite.transform.colorTransform=
new ColorTransform(rosso1,verde1,blu1);
if(Math.abs(dr)<=.01)
{
_sprite.removeEventListener(Event.ENTER_FRAME,onEnterFrame);
}
}
public function onClick(event:MouseEvent):void
{
var n:Number=Math.floor(Math.random()*colors_array.length);
setColor(colors_array[n]);
}
public function setColor(s:String):void
{
switch(s)
{
case 'randomize':
rosso2=Math.random();
verde2=Math.random();
blu2=Math.random();
break;
case 'light-blue':
rosso2=0;
verde2=.5;
blu2=1;
break;
case 'purple':
rosso2=.8;
verde2=.3;
blu2=.85;
break;
case 'red':
rosso2=.88;
verde2=.19;
blu2=.31;
break;
case 'green':
rosso2=.18;
verde2=.47;
blu2=.26;
break;
case 'brown':
rosso2=.54;
verde2=.38;
blu2=.25;
break;
case 'blue':
rosso2=.14;
verde2=.10;
blu2=.34;
break;
case 'orange':
rosso2=.98;
verde2=.53;
blu2=.20;
break;
case 'yellow':
rosso2=.92;
verde2=.94;
blu2=.24;
break;
}
reCall();
}
}
}
I"ve also included a case for "randomize", so that we can use random colours.
Stay tuned!