Jeg har fået et lille script man kan sætte på en frame i et movieclip, så når man trykker på en knap, så bliver denne frameafspillet og MC'et bevæger sig til en ny position med en easingparameter. Nice job, Ditlev ;)
Men jeg kunne nu godt tænke mig en ekstra parameter, nemlig at kunne bestemme, at denne bevægelse skal forgå over eks. 10 frames, uanset hvor lang vej MC'et har til sin destination.
Jeg har nemlig sat Ditlev's script på et stort (meget stort) MC, som så skulle ændre placering, men det går alt alt for langsomt..
Hvad er det for en hastighed Flash bruger som sin default hastighed..? Jeg kan i Ditlevs script ikke se noget med distance/tid deffineret, derfor må der her vel refereres til enelleranden default hastighed? Men det er måske også bare mig der er underbegavet.. ;)
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Du har desværre ikke angivet, hvordan hans algoritme ser ud, men jeg går ud fra, at den blot flytter dit movie clip en brøkdel af afstanden (denne metode er den mest anvendte og brugt et utal af gange!). Vandret ser den formentlig sådan ud:
Jeg har sgu glemt scriptet. Damn it. Nu har jeg ikke længere internetforbindelse derhjemme, så nu sidder jeg på Københavns billigeste (og mest snavsede) internetcafé i Valby - og så har jeg sgu glemt disketten!
Nå, men. Ja, jeg er sgu underbegavet, Nikolaj ;)
Gotcha: Det er netop sådan en algoritme der er brugt i mit script. Det ser ud i stil med
..og så er der så to linier til jeg ikke kan huske i hovedet..
Ihvertfald, så søger jeg nu et script, som egentlig fungere på samme måde, men hvor der er deffineret et tidsinterval også. Jeg kan nemlig se (umiddelbart) at hastigheden må være proportional med den afstand som MC'et har til sit target, og det dur' ik'.
Desuden, Gotha, tak for dit link. Der er noget at begrave sig I. :)
Nikloaj, vi skal snart ha' en kasse øl :), men det vil være helt fantastisk hvis du kunne kringle et script til mig.. :) (Er desværre ikke god nok til endnu at lave det selv..)
Det eneste eksemplet gør, er at flytte dit movie clip (jeg har givet det navnet clip) 100 pixels til højre for dets nuværende position, og dette varer nøjagtig 12 frames!
Når movie clippet hentes defineres et par konstanter såsom antallet af frames, destinationen og en variabel t til at holde styr på tiden. Vi kontrollerer så blot, om der endnu ikke er blevet afspillet 12 frames, og i så fald flytter vi ganske enkelt vores movie clip vha. den funktion, der er defineret på hovedtidslinien (sædvanligvis placerer jeg alle mine prototyper der).
Det burde være ret nemt at modificere til dine behov :)
Hvis du absolut skal have tidsparametret i sekunder, så kan du erstatte koden vedhæftet til clip med følgende (her tager det 12 sekunder at bevæge sig de 100 pixels):
onClipEvent (load) { var start = this._x; var end = this._x + 100; var duration = 12; var t = 0; var b = getTimer(); }
onClipEvent (enterFrame) { t = (getTimer()-b)/1000; if (t <= duration) { this._x = Math.easeInQuad(t, start, end, duration); } }
Morten, jeg har problemer med at downloade din .FLA-fil..:)
Men jeg må lige spørge:
onClipEvent (load) { var start = this._x; //Er dether start punktet for _x? Er det nødvendigt? var end = this._x + 100;// Hvorfor ligger slutpunktet 100 px. væk? var duration = 12; //12 sekunder, okay.. Kan man bruge decimaltral? var t = 0; // Hvad kan jeg indstille her? var b = getTimer(); }
onClipEvent (enterFrame) { t = (getTimer()-b)/1000; if (t <= duration) { this._x = Math.easeInQuad(t, start, end, duration); } }
KAn jeg ændre på easing parameteren nogen steder her? :)
Der er de 4 parametre, fordi funktionen ganske enkelt tager 4 parametre :)
Variablen start kan selvfølgelig være alt muligt, men her har jeg bare valgt den nuværende x-position. Du kan sagtens placere den f.eks. x = 230 og så sige, at den skal slutte i x = 50.
Variablen duration er bare for lang tid, der skal gå, og det kan sagtens være et decimaltal. Hvis du kigger på udtrykket t = (getTimer()-b)/1000, så måles den forløbne tid med tre decimaler (getTimer er i millisekunder, og derfor skal der divideres med 1000 for at konvertere til sekunder). Vi sætter her t=0 for at definere et starttidspunkt (hvis du vil bruge frames skal du erstatte t = (getTimer()-b)/1000 med t++), men det er i denne sammenhæng egentlig ikke nødvendigt, da værdien ikke bruges til at beregne t i enterFrame.
1 Der skal jo også være en _y faktor 2 Positionen er relativ i forhold til den position hvorfra MC'et sidst findes - det dur' ikke. Den skal altså være abslout, da jeg ellers skal lave alt for mange kombinationsmuligheder..
Jeg prøver lige at finde det script frem som Ditlev har lavet.. Det fungerer faktisk som det skal, på nær denher tidsfaktor som mangler.. :)
Action på knap: on (release) { _root.clip.gotoAndPlay(2); _root.clip2.gotoAndPlay(2); _root.clip3.gotoAndPlay(5); _root.clip4.gotoAndPlay(5); }
Action på MC: (Der er her flere frames i mc'et - et hvor man får det til at bevæge sig til sit target-position og et hvor det bevæger sig til en anden targetposition (eks. til startpositionen))
Jeg lavede da ellers en tidsbaseret easing funktion til dig ? den med color easing... Den kan du bruge på samme måde og flytte _x i stedet for color.transform'e og du kan selv indtaste tiden som parameter (i sekunder) 10 frames ved 12 fps = 1.2 sek
Det jeg havde i tankerne var koden på colorEase MC'et.. Men jeg er på vej hjem nu så jeg kan jo også tjekke om jeg stadig har eksemplet når jeg når så langt.. Vender tilbage i morgen :)
Jeg har genbrugt color ease funktionen og flytter MC'ens _x i ved at specificere hvor meget den skal flytte sig og hvor lang tid den skal bruge. Resten sørger funktionen selv for. Håber at du kan følge min rodet demofil (c:
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.