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