• 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)