• User Newbie

    Help per galleria fotografica....

    Ciao a tutti gli amanti di flash, volevo chiedere se qualcuno saprebbe dirmi come posso fare una semplice galleria fotografica come questa che ho trovato sul sito della Gazzetta a questo link:
    http://www.gazzetta.it/spille/?rcsrid=gazz_spille

    dopo aver selezionato una squadra,

    nella sezione "piano dell'opera" (dove le foto dei giocatori ruotano e cliccandoci sopra appaiono i dattagli riguardanti l'interessato.)

    Grazie a chiunque sappia aiutarmi... :arrabbiato:


  • Super User

    Ciao clauzio e benvenuto.
    Scusa ma quello che chiedi mi sembra un po troppo vago...sarebbe a dire come se vai in farmacia e gli chiedi:'scusi coma si fa a fare l'aspirina? ' 😛

    Non saprei da dove cominciare.
    Hai buttato giù una bozza ?
    A che punto sei arrivato ?


  • User Newbie

    Ciao, intanto grazie per l'interessamento.

    Dunque quello che intendo io è che voglio creare una galleria fotografica che ruoti a seconda di dove è posizionato il mouse, più veloce quando il mouse è esterno e più lentamante quando il mouse è verso il centro.
    Al rollover su ogni singola foto questa si ingrandisce.
    al release si apre la scheda relativa alla foto scelta.

    Spero di esser stato più chiaro...


  • Super User

    Ti scrivo uno script di partenza che ti può aiutare a capire la logica del movimento che vorresti.

    Crea una movieclip.
    Istanziala 6 volte nello stage di Flash e chiamale clip_0_mc, clip_1_mc, clip_2_mc, ecc ecc.

    Imposta il frame rate a 31.
    Seleziona il primo frame, apri il pannello azioni e scrivi:

    
    var Clips:Array=new Array(clip_0_mc,clip_1_mc,clip_2_mc,clip_3_mc,clip_4_mc,clip_5_mc);
    for(var i:Number=0;i<Clips.length;i++)
    {
        Clips*._x=10+Clips*._width*i+50*i;
        Clips*._y=Stage.height/2;
        Clips*.onRollOver=function():Void
        {
            trace('rollover');
        }
        Clips*.onRelease=function():Void
        {
            trace('released');
        }
    }
    this.onEnterFrame=function():Void
    {
        var speed:Number=(Stage.width/2-_xmouse)*.08;
        for(var i:Number=0;i<Clips.length;i++)
        {
            Clips*._x+=speed;
        }
    }
    
    

  • User Newbie

    Ok ci proverò. Grazie 1000. TI farò sapere.
    Ciau


  • User Newbie

    Ok l'ho capito, ed ho imparato il ciclo for 😉
    Ora quello che intendevo io è molto simile al tuo sito actionscript.ws, e cioè che le cartelle ruotano in senso cirolare allontanandosi in profondità.
    Si ottiene sempre tramite codice?


  • Super User

    Si ottiene solo tramite codice 🙂
    Lo script delle cartelle che ho fatto necessita di un'avanzata conoscenza di actionscript.
    In più devi applicare trigonometria e fisica ad actionscript.

    Da quanto ho capito hai appena concepito un semplice ciclo for per cui penso sia al momento impossibile che tu riesca a capire quello script 🙂
    Non ti voglio offendere ne peccare di presunzione.

    L'input te l'ho dato.
    Di certo non posso regalare gli scripts che creo, non trovi ?


  • User Newbie

    Hai già fatto troppo, sei stato molto gentile, non volevo assolutamente chiederti lo script, ma appunto solo se continuava ad essere usato codice. Non c è problema, non mi sono offeso, sono agli inizi e sto imparando, grazie anche al tuo aiuto.
    Grazie infinite.
    Ciao


  • Super User

    Prego,
    studia lo script che ti ho dato fino a capirlo perfettamente.
    Poi prova a personalizzarlo un po.
    Se ti serve una mano in qulche cosa che non ti è chiara...io sono quì... 🙂


  • User Newbie

    Ciao, ho applicato il tuo codice alla mia galleria e funziona tutto; ora il mio problema è come fare a ripetere l'array in modo che le immagini non finiscano e dopo che l'ultima è finita si rivede la prima. Si può fare?
    Grazie


  • Super User

    Allora potrebbe diventare così:

    
    import flash.geom.Point;
    var Clips:Array=new Array(clip_0_mc,clip_1_mc,clip_2_mc,clip_3_mc,clip_4_mc,clip_5_mc);
    var Points:Array=new Array();
    var distance:Number=30;
    var width:Number=Clips[0]._width;
    for(var i:Number=0;i<Clips.length;i++)
    {
        Clips*.id=i;
        Clips*._x=distance+width*i+distance*i;
        Clips*._y=Stage.height/2;
        Clips*.onRollOver=function():Void
        {
            trace('rollover');
        }
        Clips*.onRelease=function():Void
        {
            trace('released');
        }
    }
    for(var i:Number=0;i<Clips.length+2;i++)
    {
        var point:Point=new Point(-width+width*i+distance*i,Clips[0]._y);
        Points.push(point);
    }
    this.onEnterFrame=function():Void
    {
        var n:Number;
        var speed:Number=(Stage.width/2-_xmouse)*.08;
        for(var i:Number=0;i<Clips.length;i++)
        {
            Clips*._x+=speed;
            if(Clips*._x>=Points[Points.length-1].x)
            {
                n=Clips*._x-Points[Points.length-1].x;
                Clips*._x=Points[0].x+n;
            }
            if(Clips*._x<=Points[0].x)
            {
                n=Points[0].x-Clips*._x;
                Clips*._x=Points[Points.length-1].x-n;
            }
        }
    }
    
    

    In questo caso se la _x di ogni singola clip è maggiore o minore di un certo punto si rimette in posizione di partenza.

    Oppure hai un'altra soluzione, tieni tutte le clips all'interno di una clip che funge da contenitore e muovi solo questo contenitore.


  • User

    CIao Flep, per assegnare un link ad ogni clip che scorre, come fare?


  • Super User

    Aggiungi un Array:

    
    var Links:Array=new Array('pic_0.jpg','pic_1.jpg','pic_2.jpg','pic_3.jpg');
    
    

    e poi sull'evento onRelease:

    
    Clips*.onRelease=function():Void
    {
        trace(Links[this.id]);
    }
    
    

  • User

    Grazie Flep, provo..................


  • Super User

    X schil: