Ciauz !
Questo
Flash tutorial spiega come applicare delle transizioni di colore su una MovieClip utilizzando il metodo statico interpolateColor della classe Color di Actionscript 3.0.
Vogliamo ad esempio creare uno sfondo che cambia colore progressivamente in base alla sezione in cui ci troviamo ?
Oppure creare dei bottoni che ad ogni evento del mouse creano una transizione di colore diversa ?
Vediamo come fare...
Creo un FLA che salvo con nome ' main.fla '.
Con il codice seguente, disegno e creo una MovieClip di forma quadrata e al click sullo stage eseguo una transizione di colore della MovieClip stessa.
Code:
import fl.transitions.Tween;
import fl.transitions.TweenEvent;
import fl.transitions.easing.Strong;
import fl.motion.Color;
import flash.events.Event;
import flash.geom.ColorTransform;
var start_color:uint=0xCCFF00;
var final_color:uint=0x003399;
var clip_mc:MovieClip=new MovieClip();
clip_mc.graphics.beginFill(start_color,1);
clip_mc.graphics.drawRect(100,100,100,100);
clip_mc.graphics.endFill();
addChild(clip_mc);
var colorInfo:ColorTransform=clip_mc.transform.colorTransform;
function initTween(event:MouseEvent):void
{
var my_tween:Tween=new Tween(clip_mc,'alpha',Strong.easeOut,0,1,1,true);
my_tween.addEventListener(TweenEvent.MOTION_CHANGE,tweenToFinal);
}
function tweenToFinal(event:TweenEvent):void
{
colorInfo.color=Color.interpolateColor(start_color,final_color,event.position);
clip_mc.transform.colorTransform=colorInfo;
}
stage.addEventListener(MouseEvent.CLICK,initTween);
Risultato ( cliccare sullo stage ) :
Analizziamo il codice
importo le classi che mi servono:
import fl.transitions.Tween;
import fl.transitions.TweenEvent;
import fl.transitions.easing.Strong;
import fl.motion.Color;
import flash.events.Event;
import flash.geom.ColorTransform;
creo due variabili di tipo uint che contengono rispettivamente il colore iniziale e quello finale
var start_color:uint=0xCCFF00;
var final_color:uint=0x003399;
creo una nuova MovieClip e disegno un quadrato al suo interno con il colore contenuto nella variabile start_color
var clip_mc:MovieClip=new MovieClip();
clip_mc.graphics.beginFill(start_color,1);
clip_mc.graphics.drawRect(100,100,100,100);
clip_mc.graphics.endFill();
aggiungo clip_mc allo stage
addChild(clip_mc);
creo una variabile di tipo ColorTransform e gli assegno il colorTransfrom della proprietà transform di clip_mc
var colorInfo:ColorTransform=clip_mc.transform.colorTr ansform;
creo una funzione che verrà chiamata al momento del click del mouse
function initTween(event:MouseEvent):void
{
creo una nuova Tween e gli passo i parametri che preferisco
var my_tween:Tween=new Tween(clip_mc,'alpha',Strong.easeOut,0,1,1,true);
aggiungo un listener a my_tween in ascolto dell' evento MOTION_CHANGE che chiamerà la funzione tweenToFinal
my_tween.addEventListener(TweenEvent.MOTION_CHANGE ,tweenToFinal);
}
function tweenToFinal(event:TweenEvent):void
{
assegno alla proprietà color della variabile colorInfo ( che è di tipo ColorTransform ) il valore ottenuto chiamando il metodo statico interpolateColor della classe Color, passandogli un colore iniziale, uno finale ed il valore del momento della tween ( event.position ) che andrà progressivamente da 0 a 1
colorInfo.color=Color.interpolateColor(start_color ,final_color,event.position);
assegno il colore a clip_mc sempre attraverso il colorTransform della sua proprietà transform
clip_mc.transform.colorTransform=colorInfo;
}
aggiungo il listener allo stage in ascolto dell' evento CLICK
stage.addEventListener(MouseEvent.CLICK,initTween) ;
Alla prossima !