• Super User

    Ok,

    this.onEnterFrame=null;
    quì fermo e azzero l'intervallo onEnterFrame che l'evento onRollOut ha fatto partire.

    this.onENterFrame=function
    quì faccio ripartire l'intervallo onEnterFrame

    var acc_x:Number=(center-this._xscale)*spring;
    quì inizia la legge fisica dell'inerzia.
    Creo una variabile che contenga sempre un valore numerico. Center è 200 (il doppio dell'_xscale della clip) a cui viene sottratto l'_xscale della clip e il tutto moltiplicato per spring. In questo caso spring è .1, quindi sarebbe come dire diviso 10 (/10).

    vel_x+=acc_x;
    quì finisce la legge fisica dell'inerzia, per cui aggiungo ogni volta il valore ottenuto da acc_x (che non è altro che l'accelerazione fisica) ad un numero che in questo caso è 100 (perchè vel_x è 100).

    vel_x*=friction;
    quì riproduco la frizione e cioè faccio in modo che il valore vel_x vada sfumando fino a fermarsi. Sarebbe come scrivere vel_x=vel_x*friction;

    this._xscale+=vel_x;
    this._yscale+=vel_x;
    alla fine do in pasto il valore di vel_x all'_xscale e _yscale della clip.


  • User

    scusami se ti disturbo ancora ma non mi funziona...tu questo codice l'hai messo nel movieclip giusto? perchè io l'ho messo nel movieclip alla quale voglio dare l'azione e mi da diversi errori del tipo

    Errore Scena=Scena 1, livello=Livello 1, fotogramma=1:Linea 1: L'istruzione deve apparire all'interno del gestore on/onClipEvent
    var clip:MovieClip=this.clip_mc;

    Errore Scena=Scena 1, livello=Livello 1, fotogramma=1:Linea 2: L'istruzione deve apparire all'interno del gestore on/onClipEvent
    var spring:Number=.1;

    Errore Scena=Scena 1, livello=Livello 1, fotogramma=1:Linea 3: L'istruzione deve apparire all'interno del gestore on/onClipEvent
    var friction:Number=.9;

    Errore Scena=Scena 1, livello=Livello 1, fotogramma=1:Linea 4: L'istruzione deve apparire all'interno del gestore on/onClipEvent
    var center:Number=200;

    Errore Scena=Scena 1, livello=Livello 1, fotogramma=1:Linea 5: L'istruzione deve apparire all'interno del gestore on/onClipEvent
    var center2:Number=100;

    Errore Scena=Scena 1, livello=Livello 1, fotogramma=1:Linea 6: L'istruzione deve apparire all'interno del gestore on/onClipEvent
    var vel_x:Number=100;

    Errore Scena=Scena 1, livello=Livello 1, fotogramma=1:Linea 7: L'istruzione deve apparire all'interno del gestore on/onClipEvent
    clip._xscale=vel_x;

    Errore Scena=Scena 1, livello=Livello 1, fotogramma=1:Linea 8: L'istruzione deve apparire all'interno del gestore on/onClipEvent
    clip.onRollOver=function(Void):Void

    Errore Scena=Scena 1, livello=Livello 1, fotogramma=1:Linea 21: L'istruzione deve apparire all'interno del gestore on/onClipEvent
    clip.onRollOut=function(Void):Void

    Totale errori ActionScript: 9 Errori segnalati: 9

    potresti aiutarmi in quest'ultimo passaggio (magari anche se puoi postando il sorgente di quello che hai fatto così lo confronto col mio...)
    grazie
    ciao

    edit: pensando fosse quello errore ho cambiato il nome istanza del mio simbolo in clip ma senza risultato...


  • Super User

    Devi scrivere quel codice sulla timeline 🙂


  • User

    ok scritto come azione sul primo (e unico) frame del primo (e unico) livello e non da errori ma non funziona ugualmente (nessun effetto)...tu di preciso come hai fatto?


  • User

    up


  • Super User

    Hai chiamato la movieclip:
    clip_mc ?


  • User

    si ma il problema è che non va nel senso che l'effetto "agisce" solo su una voce...nel mentre ti scrivo sto anche io cercando di capire il perchè (forse il this che si riferisce ad ogni singolo clip)...ho provato a distribuire i clip su livelli diversi...ho provato cambiando il this con il nome dei clip (chiamato tutte le voci clip_mc)...ma non va...ecco il risultato...
    http://img74.imageshack.us/my.php?image=barra2mo8.swf
    mi scuso perchè ti sto facendo perdere così tanto tempo ma non sto riuscendo proprio a venirne a capo... 😞
    Fr3d3R!K


  • User Attivo

    per gestirla su tutti i clip chiama ogni voce rispettivamente clip_mc1 clip_mc2 e racchiudi il codice suggerito da flep in una funzione passandogli come parametro il nome del clip. esempio:

    function applica_elastico(clip_mc) {
    var clip:MovieClip=clip_mc;
    var spring:Number=.1;
    var friction:Number=.9;
    var center:Number=200;
    var center2:Number=100;
    var vel_x:Number=100;
    clip._xscale=vel_x;
    clip.onRollOver=function(Void):Void
    {
    this.onEnterFrame=null;
    center=200;
    this.onEnterFrame=function(Void):Void
    {
    var acc_x:Number=(center-this._xscale)spring;
    vel_x+=acc_x;
    vel_x
    =friction;
    this._xscale+=vel_x;
    this._yscale+=vel_x;
    }
    }
    clip.onRollOut=function(Void):Void
    {
    this.onEnterFrame=null;
    center2=100;
    this.onEnterFrame=function(Void):Void
    {
    var acc_x:Number=(center2-this._xscale)spring;
    vel_x+=acc_x;
    vel_x
    =friction;
    this._xscale+=vel_x;
    this._yscale+=vel_x;
    }
    }
    }

    per richiamare questa funzione
    rispettivamente subito dopo averla dichiarata scrivi.

    applica_elastico(clip_mc1)
    applica_elastico(clip_mc2)
    applica_elastico(clip_mc3)
    applica_elastico(clip_mc4)

    Per simulare meglio l'effetto è meglio allineare l'istanza al centro rispetto al punto di registrazione

    spero puo' esserti d'aiuto
    ciao


  • User

    l'effetto funzionava, c'era una cosa "brutta", cioè il fatto che quando si animava il pulsante occupava la profondità minore "occultandosi" alla vita ma ho risolto con il mio fidato swapdepths...
    se dovesse servire il codice è ```
    this.swapDepths(_root.getNextHighestDepth());

    una cosa...ma è normale che tutti mi facciano l'effetto verso sinistra mentre l'ultimo "dritto" giusto? (per mancanza di spazio perchè l'ultima voce l'ho messa quasi attaccata alla fine dello stage)...
    per l'esempio...
    http://i3.photobucket.com/albums/y94/f3D3rK/barraa.swf?t=1173293995
    questa non è una vera e propria domanda...solo una curiosità...se volete potete anche riservarvi dal rispondere siete stati anche troppo gentili...non vorrei fare la figura di colui che se ne approfitta...
    grazie infinitamente infiniti
    Fr3d3R!K
    p.s. eventualmente se i mod o gli admin lo ritengono necessario il topic si può anche chiudere in quanto raggiunto lo scopo della sua apertura...

  • Super User

    Tieni il punto di registrazione delle clip al centro. 🙂