Il BlurFilter è una cosa che amo, mi piace proprio tanto.
Ho creato un esempio su come poter applicare il BlurFilter alle nostre MovieClip con Actionscript 3.0 e ci ho ' giocato ' un po.
Code:
package
{
import flash.display.MovieClip;
import flash.text.TextField;
import flash.events.Event;
import flash.geom.Point;
import flash.filters.BlurFilter;
public class Bluring extends MovieClip
{
private var clips_array:Array;
private var fields_array:Array;
private var arrX:Number;
private var arrY:Number;
public function Bluring()
{
stage.frameRate=31;
init();
initListener();
}
private function init():void
{
clips_array=new Array(clip_0_mc,clip_1_mc,clip_2_mc,clip_3_mc,clip_4_mc);
fields_array=new Array(tag_0_mc.info_txt,tag_1_mc.info_txt,tag_2_mc.info_txt,
tag_3_mc.info_txt,tag_4_mc.info_txt);
}
private function initListener():void
{
addEventListener(Event.ENTER_FRAME,controllaMouse);
}
private function controllaMouse(e:Event):void
{
var point:Point=new Point(mouseX,mouseY);
for(var i:int=0;i < clips_array.length;i++)
{
var scalingX:Number=12-clips_array[i].scaleX*6;
var scalingY:Number=12-clips_array[i].scaleY*6;
fields_array[i].text='BLUR = '+(scalingX.toFixed(2)).toString();
getFilter(scalingX,scalingY,clips_array[i]);
if(clips_array[i].hitTestPoint(point.x,point.y,false))
sottoFocus(clips_array[i]);
else
libero(clips_array[i]);
}
}
private function sottoFocus(m:MovieClip):void
{
var arrS:Number=200;
var ds:Number=arrS-m.scaleX*100;
var xs:Number=ds*.2;
m.scaleX+=xs/100;
m.scaleY+=xs/100;
}
private function libero(m:MovieClip):void
{
var arrS:Number=100;
var ds:Number=arrS-m.scaleX*100;
var xs:Number=ds*.2;
m.scaleX+=xs/100;
m.scaleY+=xs/100;
}
private function getFilter(xx:Number,yy:Number,m:MovieClip):void
{
var array_filter:Array=new Array();
var quality:int=2;
var filter:BlurFilter=new BlurFilter(xx,yy,quality);
array_filter.push(filter);
m.filters=array_filter;
}
}
}
Risultato:
Il succo di questo script ( che ho farcito un po troppo forse e i meno esperti potrebbero avere difficoltà nel tradurlo ) è come applicare il BlurFilter ad una MovieClip, e cioè:
serve passare un Array con il filtro al suo interno alla proprietà filters della MovieClip.
Ciao a tutti,
questo è il mio primo post, e sono nuovo di AS3. Siate clementi...
Innanzitutto complimenti per le risorse messe a disposizione di tutti i flash coders.
Un grazie di cuore!
Piccola domanda: come faccio funzionare l'esempio proposto?
Creando una document class e instanziando la classe Bluring, o addirittura utilizzando la classe Bluring stessa come Document Class ottengo il seguente errore:
1120: Access of undefined property clip_0_mc.
1120: Access of undefined property tag_0_mc.
questo naturalmente per tutti gli elementi dei due array.
ho creato elementi sul filmato con istanza clip_0_mc, clip_1_mc etc ed altrettanti mc instanziati come tag_0_mc contenenti all'interno un campo instanziato come info_txt.
Please help!!!
Grazie per l'aiuto, spero di postare presto anch'io qualcosa di utile...
Quei 2 errori dicono che lash non trova sul tuo stage una MC con nome clip_0_mc e una con nome tag_0_mc.
Controlla bene i nomi delle MovieClip che hai sullo stage.
Ho controllato bene ma le MC sullo stage con i nomi designati ci sono... clip_0_mc e tag_0_mc etc... (come specificato nei 2 array del metodo init(): clips_array e fields_array).
Non so che pesci prendere ...
Risolto!!!!
scusa... scusa... scusa... !!!
L'avevo già detto che sono veramente nuovo di As3.0???
Instanziavo male la main class. Lo facevo usando una sintassi del tipo:
var main:Main=new Main;
sul primo frame.
Vedo che da As2.0 ci passa un mare... o quasi!
Devo studiare e giocarci un pò con questo nuovo linguaggio!
Grazie mille!!!!
Re: BlurFilter alle MovieClip con Actionscript 3.0
ciao Flep,
Essendo un principiante mi trovo nel panico..
Il tuo esempio sarebbe utile al mio caso (devo fare la stessa cosa però per delle icone)
Avresti un sorgente da studiare? Grazie
Bookmarks