...och då kan lösa detta? Om någon ska kunna hjälpa får du nog allt lägga ut din kod så att nån kan se vad som är fel. Men det ska ju inte behövas, jag undrade bara om någon visste en ekvation som sköter detta. Typ: dur = speed/(målposition-nuvarande_position); speed += dur; Det beror på hur exakt du vill ha det. Hm... du va mig en baddare på matte ;) >Hm... du va mig en baddare på matte ;) Hm... tack så mycket Niklas!Någon som är duktig på DHTML?
Jag försöker skapa en function som ska förflytta ett lager till en viss position med en animation. Den skall flyttas mot positionen hela tiden och när den nått sitt mål slutar den att skapa timeouts...
Så här långt går det bra, men nu vill jag även att lagret ska flyttas snabbt i början av animationen och långsammmare på slutet. När jag försöker med detta blir slutpositionen lite konstig (några enstaka pixels fel).
Kan någon hjälpa lr e ni för lata nu för tiden i detta forum (skoja)? ;)
Ha're!Sv: Någon som är duktig på DHTML?
Ingen vill väl skriva en hel sida gratis Bara till dig.Sv: Någon som är duktig på DHTML?
Detta testade jag, men det funkar ju inte så bra ;)
Jaja, jag får väl tänka vidare då. Ha're!Sv: Någon som är duktig på DHTML?
Du kan använda exponentiella funktioner, 1/x, polynom osv.
Om hastigheten skall vara proportionell mot avståndet kvar använder du differentialekvationen
dx/dt=k*(x_slut-x)
som har lösningen
x = C*e^(-kt)+x_slut
Med partikulärvillkoret x(0)=x_start får du
x = (x_start - x_slut) * e^(-kt) + x_slut
Men detta är en tung funktion för datorn.
Berätta hur tung funktionen får vara så blir det lättare att bestämma metod.
/Niklas JanssonSv: Någon som är duktig på DHTML?
Iaf, jo men hur anpassar man de ekvationerna till javascript då?
Nåja, jag har tänkt att göra en så liten fil som möjligt (*.js), så en smidig men ändå "energisnål" variant skulle passa som handen i handsken...
Har du mejl förresten? Tja!Sv: Någon som är duktig på DHTML?
Hehe... :)
>Har du mejl förresten?
Hmm... kolla i visitkortet...
>Iaf, jo men hur anpassar man de ekvationerna till javascript då?
Det var ett tag jag kodade i js, men något sånt här är det väl:
function position(var t)
{
var x;
x = (x_start - x_slut) * Math.Exp (-k*t) + x_slut;
return x;
}
åsså byter du ut x_start, x_slut och k mot lämpliga värden.
Hur det funkar i förhållande till DHTML osch så vidare är jag osäker på.
Storleken är inte speciellt överväldigande, men prestandan kan vara dålig. Detta beror på att e^t beräknas som
1+x/1+x^2/2+x^3/3!+ x^4/4! + ...
och detta tar lite tid.
Ett alternativ hade varit att att göra en array som du fyller med med värden, istället för att använda exp.
/Niklas Janssonk?
Men en sak undrar jag fortfarande, nämligen vad variabeln k står för.
Var. t antar jag är tiden som hela animationen ska ta att utföra...
Men vad är då k? är det ett flyttal som kontrollerar hur mycket animationen ska öka i fart, eller?
Har inte haft tillgång till internet på ett tag nu, och beklagar att jag inte svarat tidigare.
Ha're!