'giorno a tutti !
Vi ricordate il primo esempio ?
Ecco il secondo esempio di come applicare il BlurFilter ad una MovieClip, in runtime con Actionscript 3.0 .
In questo caso, utilizzo seno e coseno applicato al BlurFilter.
Creo un FLA che salvo con nome ' main.fla '.
Al suo interno ho una MovieClip sullo stage, in questo caso l' ho chiamata ' flep_mc '.
Creo la Document Class, un file AS che salvo con nome ' Main.as ', implementata in questo modo:
Code:
package
{
import flash.display.MovieClip;
import flash.filters.BlurFilter;
import flash.filters.BitmapFilterQuality;
import flash.events.Event;
public class Main extends MovieClip
{
private var angle:Number=-Math.PI/2;
private var speed:Number=.2;
private const RANGE:int=50;
public function Main()
{
init();
}
private function init():void
{
stage.frameRate=31;
flep_mc.addEventListener(Event.ENTER_FRAME,go);
}
private function go(evt:Event):void
{
var sine:Number=Math.sin(angle)*RANGE;
var cosine:Number=Math.cos(angle)*RANGE;
var blurX:int=cosine;
var blurY:int=sine;
var filter:BlurFilter=new BlurFilter(blurX,blurY,BitmapFilterQuality.HIGH);
var filters_array:Array=new Array();
filters_array.push(filter);
flep_mc.filters=filters_array;
angle+=speed;
}
}
}
risultato:
Analizziamo il codice
Proprietà
una variabile numerica che utilizzerò come angolo a cui applicare seno e coseno
private var angle:Number=-Math.PI/2;
una variabile numerica che conterrà la velocità di incremento dell' angolo
private var speed:Number=.2;
una costante che mi servirà per moltiplicare il seno ed il coseno ( altrmenti avrei soltanto valori da -1 a 1 )
private const RANGE:int=50;
Funzione costruttrice
chiamo il metodo init
init();
Metodi
init();
imposto la velocità di frame rate
stage.frameRate=31;
aggiungo un ENTER_FRAME che chiama il metodo go
flep_mc.addEventListener(Event.ENTER_FRAME,go);
go();
un variabile locale che mi calcola il seno dell' angolo moltiplicato il valore di RANGE
var sine:Number=Math.sin(angle)*RANGE;
un variabile locale che mi calcola il coseno dell' angolo moltiplicato il valore di RANGE
var cosine:Number=Math.cos(angle)*RANGE;
due variabili locali in cui inserisco i valori ( seno e coseno ) del BlurFilter su asse X e Y
var blurX:int=cosine;
var blurY:int=sine;
una variabile locale istanza di BlurFilter
var filter:BlurFilter=new BlurFilter(blurX,blurY,BitmapFilterQuality.HIGH);
un Array in cui inserire il BlurFilter
var filters_array:Array=new Array();
inserisco il BlurFilter nell' Array tramite il metodo push
filters_array.push(filter);
applico BlurFilter alla MovieClip che ho sullo stage
flep_mc.filters=filters_array;
incremento l' angolo
angle+=speed;
Se volessi eseguire l' effetto una sola volta, dovrei aggiungere il seguente codice subito dopo l' incremento dell' angolo
Code:
if(angle>=Math.PI)
{
flep_mc.removeEventListener(Event.ENTER_FRAME,go);
flep_mc.filters=[];
trace('stop');
}
Stay tuned !
Bookmarks