cerchiamo di capire i principi di questa animazione...
Non viene stabilito soltanto lo spazio dello spostamento dell'elemento, ma anche il tempo.
Si calcola il tempo trascorso e lo si rapporta al tempo totale in cui si vuole che l'elemento compia il suo spostamento.
Sapendo che l'intero spostamento deve essere compiuto in un certo tempo, si aggiunge alla posizione iniziale lo spazio, rapportato all'intero spostamento, in cui l'elemento si dovrebbe trovare in quel dato momento.
Devo percorrere 10 cm in 10 secondi.
Dopo 1 secondo, calcolo il tempo trascorso, e ottengo 1 secondo.
Calcolo, e scopro che 1 secondo è 0,1 rispetto allo spostamento voluto.
Quindi devo aggiungere alla posizione iniziale dell'elemento lo spostamento moltiplicato per 0,1.
Cerco di tradurre questo nella funzione come viene rappresentata...
Calcolo il tempo trascorso:
... this.start = new Date().getTime(); ... this.next = function() { var now = new Date().getTime(); if( (now - this.start) > time ) return false; return this.ant = easing( (now - this.start) / time, this.ant); } }in caso di easing lineare il risultato è now-this.start/time, ossia la percentuale del tempo trascorso, che viene passato, se inferiore a 1, come parametro alla callback:
this.init = function() { setTimeout(function() { if(!_this.next()){ callback(1); _this.done = true; return; } callback(_this.next()); _this.init(); }, 13); }...la quale callback è
function(p){ o.style.left = inizio + ((fine-inizio)*p)+'px'; }leggendo o (l'elemento) dalla funzione che la contiene, aggiunge all'inizio la percentuale dello spostamento totale (fine-inizio) pari alla percentuale del tempo trascorso rispetto al totale.