• Super User

    La tua idea di creare per ogni immagine un blur diverso e poi scambiarle ad un dato evento mi sembra valida 🙂

    L'uso della scrollbar comporterebbe una logica più complessa, dovresti lavorare con Actionscript e le proporzioni.


  • User

    ah.. ovvio che con gli scrip sarebbe più complessa xò dato che è un applicazione che sarà x il web sarebbe un bel vantaggio caricarmi 1na immagine e poi usare scritp che caricarmene varie versione con i soggetti senza o con blur..

    boh.. appena ho tempo ci provo e valuto sul campo:figo::figo:


  • User

    ho trovato per ora http://www.ffiles.com/flash/menus/menublur/ che mi sembra un buon punto di partenza..

    riporto il codice originale

    import flash.filters.BlurFilter; 
    MovieClip.prototype.flou=function(){
    	var f:BlurFilter=new BlurFilter(5,5,2);
    	this.filters=;
    		this.onEnterFrame=function(){
    			this.onRollOver=function(){
    				this.val=true;
    			}
    			this.onRollOut=function(){
    				this.val=false;
    			}
    			if(this.val){
    				f.blurX-=.2;
    				if(f.blurX<0) f.blurX=0;
    				f.blurY=f.blurX;
    				this.filters=;
    			}
    			else{
    				f.blurX+=.2;
    				if(f.blurX>5) f.blurX=5;
    				f.blurY=f.blurX;
    				this.filters=;
    			}
    				
    		}
    }
    
    
    var liste:Array=["item 1", "item 2", "item 3", "item 4"]
    for(var i:Number=0; i<4; i++){
    	var mc:Array=attachMovie("item", "item"+i, i);
    	mc._y=40;
    	mc._x=60+i*95;
    	mc.label.text=liste*;
    	mc.flou();
    }
    

    diciamo tutto abbastanza chiaro, mi sono letto nel manuale quello che nn sapevo e ok..

    ora io dovrei invertire. cioè di base tutti e 4 i pulsanti nitidi e, quando uno va ad esempio su 1, far sfocare 2 3 4..

    prima cosa ho messo if(!this.val) al posto if(this.val) in modo tale che inizi nitido.. funziona diciamo a metà xkè per un primo istante è offuscato, poi si schiarisce. Ho provato a commentare this.filters=; ma non capisco xkè parta cmq sfocato.. ma è roba di poco conto..

    ho pensato allora di fare un for e sostituire this.filters=; all'interno degli if con appunto il filtro applicato ai rimanenti oggetti. Detto in codice

    
    			for (var j:Number=0;j<4;j++)
    			{
    			        if (this._name!= "item"+j)
    				{
    					eval("item"+j).filters=;		
    				}
    			}
    
    ```per il pulsante 1 funziona, cioè se vado su uno i rimanenti 2 3 4 si offuscano...
    
    
    xò se vado su 2 solo 1 si offusca e se vado su 3 4 nn accade nulla :nonono::x
    
    la cosa mi pare molto illogica.. nn capisco cosa  mi sfugga :()::():

  • Super User

    Con tutto il rispetto per il creatore di quello script, è uno script obsoleto (infatti usa prototype) ma soprattutto c'è un errore madornale: mettere gli eventi rollOver e rollOut sotto intervallo enterFrame.

    Ti ho creato uno script che credo faccia al caso tuo:
    [flash]http://www.flepstudio.net/GT/blur.swf[/flash]

    
    import flash.filters.BlurFilter;
    var clips_array:Array=new Array(clip_0_mc,clip_1_mc,clip_2_mc,clip_3_mc);
    for(var i:Number=0;i<clips_array.length;i++)
    {
     getBlur(clips_array*);
     clips_array*.onRollOver=function(Void):Void
     {
      this.filters=[];
     }
     clips_array*.onRollOut=function(Void):Void
     {
      getBlur(this);
     }
    }
    function getBlur(m:MovieClip):Void
    {
     var blurX:Number=20;
     var blurY:Number=20;
     var quality:Number=3;
     var filter:BlurFilter=new BlurFilter(blurX,blurY,quality);
     var filterArray:Array=new Array();
     filterArray.push(filter);
     m.filters=filterArray;
    }
    
    

  • User

    in effetti pure io avevo dei dubbi l'ufficienza dello script xò ho detto.. ho altri punti di partenza.. x cui 🙂

    cmq io, magari mi sono spiegato male, vorrei che quando nessuno è in rollOver siano tutti a fuoco, e solo quando si va in rollOver su di uno gli altri si sfocano

    ora provo da solo, nn so se riesco xò 😛

    poi diciamo che era gradevole quell'effetto di sfocamento nel a gradi, e non tutto insieme


  • Super User

    Io ti ho dato l'input, col mio script potresti fare qualsiasi tipo di effetto.


  • User
    import flash.filters.BlurFilter;
    var clips_array:Array=new Array(clip_0_mc,clip_1_mc,clip_2_mc,clip_3_mc);
    for(var i:Number=0;i<clips_array.length;i++)
    {
    
    // getBlur(clips_array*);
     clips_array*.onRollOver=function(Void):Void
     {
      this.filters=[];
      for (var j:Number=0;j<4;j++)
      {
              if (eval("clip_"+j+"_mc")._name!=this._name)
            getBlur(eval("clip_"+j+"_mc"));
      }
     }
     clips_array*.onRollOut=function(Void):Void
     {
    
      for (var j:Number=0;j<4;j++)
      {
              eval("clip_"+j+"_mc").filters=[];      
      }
    
     }
    }
    function getBlur(m:MovieClip):Void
    {
     var blurX:Number=20;
     var blurY:Number=20;
     var quality:Number=3;
     var filter:BlurFilter=new BlurFilter(blurX,blurY,quality);
     var filterArray:Array=new Array();
     filterArray.push(filter);
     m.filters=filterArray;
    }
    

    ok ora fa ciò che volevo.. solo che non so come fare per fare l'effetto dello scocamento "a gradi"...

    suggerimenti?


  • Super User

    Cosa intendi per sfocamento a gradi ?


  • User

    nel codice di prima, lo sfocamento non avveniva "di colpo" ma graduale. Questo perchè il codice dello sfocamento era nel frame generale x cui continuava ad eseguirlo finchè non arrivava ad un dato valore (mi pare 5)..
    ora invece lo sfocamento avviene immediatamante appunto xkè il codice è nel singolo evento

    basta guardare che è decisamente + facile che spiegarlo :lol:

    grazie ancora eh!;)


  • Super User

    Tieni blurX e blurY fuori dalla funzione.
    Gli dai valore 0.
    Al rollOver della Clip attivi onEnterFrame che chiama la funzione getBlur e aumenta le variabili blurX e blurY 😉


  • User

    mmmm.. avevo fatto la prova ed ero riuscito a far la sfocatura a gradi solo nel rollOver solo che ho perso il file e non riesco + a rifarla :()::bho:

    ho modificato per prova

    i```
    mport flash.filters.BlurFilter;
    var clips_array:Array=new Array(clip_0_mc,clip_1_mc,clip_2_mc,clip_3_mc);
    for(var i:Number=0;i<clips_array.length;i++)
    {

    // getBlur(clips_array*);
    clips_array*.onRollOver=function(Void):Void
    {
    this.filters=[];
    for (var j:Number=0;j<4;j++)
    {
    if (eval("clip_"+j+"_mc")._name!=this.name)
    {
    this.onEnterFrame=function()
    {
    getBlur(eval("clip
    "+j+"_mc"));
    }
    }
    }
    }
    clips_array*.onRollOut=function(Void):Void
    {

    for (var j:Number=0;j<4;j++)
    {
    eval("clip_"+j+"_mc").filters=[];
    }

    }
    }
    var blurX:Number=0;
    var blurY:Number=0;
    function getBlur(m:MovieClip):Void
    {
    blurX=blurX+3;
    var quality:Number=3;
    var filter:BlurFilter=new BlurFilter(blurX,blurY,quality);
    var filterArray:Array=new Array();
    filterArray.push(filter);
    m.filters=filterArray;
    }

    
    xò nn vuole andare e nn mi ricordo come accidenti avevo fatto :? help

  • User

    ok ci siamo...

    import flash.filters.BlurFilter;
    var clips_array:Array=new Array(clip_0_mc,clip_1_mc,clip_2_mc);
    for(var i:Number=0;i<clips_array.length;i++)
    {
    
    
     clips_array*.onRollOver=function(Void):Void
     {
         this.onEnterFrame=function()
        {
             this.filters=[];
            for (var j:Number=0;j<4;j++)
              {
                if (eval("clip_"+j+"_mc")._name!=this._name)
                       getBlur(eval("clip_"+j+"_mc"));
              }
         }
     }
     clips_array*.onRollOut=function(Void):Void
     {
    
      for (var j:Number=0;j<4;j++)
      {
              eval("clip_"+j+"_mc").filters=[];      
            eval("clip_"+j+"_mc").onEnterFrame=false;         
    
      }
    
        blurX=0;
        blurY=0;
     }
    }
     var blurX:Number=0;
     var blurY:Number=0;
     function getBlur(m:MovieClip):Void
    {
        
    if (blurX<5)
    {
         blurX+=.2;
          blurY+=.2; 
    }
    var quality:Number=4;
     var filter:BlurFilter=new BlurFilter(blurX,blurY,quality);
     var filterArray:Array=new Array();
     filterArray.push(filter);
     m.filters=filterArray;
    }
    
    1. non so se logicamente è troppo corretto
    2. ho provato a farlo col rollOut ma nn riesco.. coming soon

  • Super User

    Prova questo:

    
    import flash.filters.BlurFilter;
    var clips_array:Array=new Array(clip_0_mc,clip_1_mc,clip_2_mc,clip_3_mc);
    var blurX:Number=0;
    var blurY:Number=0;
    var quality:Number=3;
    for(var i:Number=0;i<clips_array.length;i++)
    {
     clips_array*.id=i;
     clips_array*.onRollOver=function(Void):Void
     {
      getBlur(this);
     }
     clips_array*.onRollOut=function(Void):Void
     {
      blurX=0;
      blurY=0;
      for(var i:Number=0;i<clips_array.length;i++)
      {
       clips_array*.onEnterFrame=null;
       clips_array*.filters=[];
      }
     }
    }
    function getBlur(m:MovieClip):Void
    {
     m.onEnterFrame=function(Void):Void
     {
      for(var i:Number=0;i<clips_array.length;i++)
      {
       if(i!=this.id)
       {
        var filter:BlurFilter=new BlurFilter(blurX,blurY,quality);
        var filterArray:Array=new Array();
        filterArray.push(filter);
        clips_array*.filters=filterArray;
        blurX++;
        blurY++;
        if(blurX>=20)
         this.onEnterFrame=null;
       }
      }
     }
    }
    
    

    tieni il framerate a 31


  • User

    ho fatto un pò d prove..
    allora volevo sapere

    1. il codice "nuovo" è per far la gradazione anche nel roolOver o è solo + corretto rispetto al mio?
      2)se la 1 era xkè è + corretto mi spieghereste i motivi
      3)xkè il frameRate a 31??

    detto ciò, ti ri-ringrazio e ti metto giusto 2 prove che ho fatto. la prima con il mio codice la seconda con il tuo, ovviamente cambiano i parametri di sfocatura ma penso quello vada molto a "gusti"

    (ho provato a farli visualizzare sul forum ma nn c sono riuscito :()::?:bho:)

    Mia versione http://img86.imageshack.us/my.php?image=senzanome1sq7.swf

    Tua versione

    http://img81.imageshack.us/my.php?image=senzanome2lv9.swf


  • Super User

    Ciao,
    i tuoi esempi non riesco a visualizzarli.
    Il mio script l'ho scritto in 2 minuti ed è solo un esempio, un input. Potresti aggiungere svariati effetti una volta che l'hai capito.

    Il mio codice è più corretto perchè è Actionscript 2.0 mentre lo script che hai presentato è in Actionscript 1.0

    Il frame rate a 31 perchè è il miglior frame rate per l'effettistica creata via actionscript.


  • User

    sisi chiaro che è un input.. era x capire..
    x gli esempi mi pare strano. basta che clicchi normalmente sul link, ti apre una pagina di un server estero su cui li ho caricati, a me vanno. Li ho applicati su una foto, con 3 soggetti, magari non avevi capito che era quello l'esempio :lol::lol:

    ora ci lavoro sopra

    grazie!


  • User

    http://img455.imageshack.us/my.php?image=senzanome3qc6.swf

    ecco ciò che volevo ;):)

     import flash.filters.BlurFilter;
    var clips_array:Array=new Array(clip_0_mc,clip_1_mc,clip_2_mc,clip_3_mc);
    var blurX:Number=0;
    var blurY:Number=0;
    var quality:Number=3;
    for(var i:Number=0;i<clips_array.length;i++)
    {
        clips_array*.id=i;
         
        clips_array*.onRollOver=function(Void):Void
         {
             if (this._name!="clip_3_mc") 
                  getBlur(this);
         }
        
         clips_array*.onRollOut=function(Void):Void
         {
              for(var i:Number=0;i<clips_array.length;i++)
              {
                   if(i!=this.id)
                   {
                       Ripristina(this);
                }
              }
         }
    }
    
    function getBlur(m:MovieClip):Void
    {
         m.onEnterFrame=function(Void):Void
         {
              for(var i:Number=0;i<clips_array.length;i++)
              {
                if(i!=this.id)
                   {
                    var filter:BlurFilter=new BlurFilter(blurX,blurY,quality);
                        var filterArray:Array=new Array();
                    eval("clip_"+i+"_mc").enabled=false;   
                    filterArray.push(filter);
                    clips_array*.filters=filterArray;
                     blurX+=.3;
                      blurY+=.3; 
                    if(blurX>=8)
                             this.onEnterFrame=null;
                   }
              }
         }
    }
    
    function Ripristina(m:MovieClip):Void
    {
        m.onEnterFrame=function(Void):Void
        {
              for(var i:Number=0;i<clips_array.length;i++)
              {
                   if(i!=this.id)
                   {
                    eval("clip_"+i+"_mc").enabled=false;   
                    var filter:BlurFilter=new BlurFilter(blurX,blurY,quality);
                    var filterArray:Array=new Array();
                    filterArray.push(filter);
                    clips_array*.filters=filterArray;
                     blurX-=.3;
                      blurY-=.3; 
                    if(blurX<=0)
                    {
                         this.onEnterFrame=null;
                          for(var j:Number=0;j<clips_array.length;j++)
                        eval("clip_"+j+"_mc").enabled=true;  
                    }
                  }
              }
         }
    }
    

    ho provato ad ottimizzarlo (tra getBlur e Ripristina c'è quasi tt il codice in comune xò se credo una funzione nuova non va..boh)