Ciao a tutti !
Dato che mi piace tantissimo il
BlurFilter di Flash CS3 ( non si era capito ) ho preparato un semplice
tutorial per creare un
effetto blur ad una
MovieClip in Movimento.
In pratica, creo un intervallo che muove la coordinata X di una MovieClip alla coordinata X del mouse utilizzando un
effetto inerzia.
Più la MovieClip è distante dal mouse e maggiore sarà l' effetto blur applicato alla stessa MovieClip.
Potreste facilmente applicare un menu scorrevole utilizzando questo effetto.
Vediamolo...
Creo un FLA che salvo con nome ' main.fla ' .
Al suo interno creo una MovieClip rettangolare, con altezza pari allo stage e larghezza... diciamo di 100 pixels.
Trascino la MovieClip sullo stage e gli assegno nome istanza ' clip_mc '.
Creo un altro livello che chiamo code, apro il pannello azioni e scrivo:
Code:
import flash.filters.BlurFilter;
import flash.filters.BitmapFilterQuality;
var blur:BlurFilter=new BlurFilter(0,0,BitmapFilterQuality.HIGH);
var filters_array:Array=new Array();
filters_array.push(blur);
clip_mc.filters=filters_array;
clip_mc.addEventListener(Event.ENTER_FRAME,go);
function go(evt:Event):void
{
var clip:MovieClip=evt.target as MovieClip;
clip.dx=mouseX;
var dxx:Number=clip.dx-clip.x;
clip.x+=dxx*.2;
var temp_array:Array=clip.filters;
temp_array[0].blurX=Math.abs(dxx/7);
temp_array[0].blurY=temp_array[0].blurX;
clip.filters=temp_array;
}
Risultato:
Analizziamo il codice:
importo le classi necessarie
import flash.filters.BlurFilter;
import flash.filters.BitmapFilterQuality;
creo una variabile di tipo BlurFilter passandogli i valori necessari
var blur:BlurFilter=new BlurFilter(0,0,BitmapFilterQuality.HIGH);
creo un Array nel quale inserirò il BlurFilter ( ricordiamoci che è una regola applicare un filtro ad una MovieClip inserendo il filtro in un Array se utilizziamo Actionscript )
var filters_array:Array=new Array();
inserisco il filtro nell' array
filters_array.push(blur);
assegno l' array col filtro alla proprietà filters di clip_mc che è sullo stage
clip_mc.filters=filters_array;
creo un ENTER_FRAME che chiama la funzione go
clip_mc.addEventListener(Event.ENTER_FRAME,go);
function go(evt:Event):void
{
creo una variabile locale a questa funzione con nome clip e gli assegno il valore di evt.target forzato a MovieClip ( in pratica non è altro che clip_mc )
var clip:MovieClip=evt.target as MovieClip;
applico un effetto inerzia sulla x della clip in base alla posizione x del mouse
clip.dx=mouseX;
var dxx:Number=clip.dx-clip.x;
clip.x+=dxx*.2;
creo un Array assegnadogli l' array che ha come valore la proprietà filters della clip
var temp_array:Array=clip.filters;
assegno i valori di blurX e blurY
temp_array[0].blurX=Math.abs(dxx/7);
temp_array[0].blurY=temp_array[0].blurX;
ri-assegno l' array alla proprietà filters della clip
clip.filters=temp_array;
}
Alla prossima & stay tuned !