GunnarGul Skrevet 9. april 2011 Del Skrevet 9. april 2011 Hei! Prøver å lage et program der et par bilder beveger seg når man holder musen over noen usynlige objekter. Ferdighetene mine innenfor actionscript 3 er ikke så veldig bra, så koden er ganske rotete og lite optimalisert. Dette er hva jeg har kommet fram til hittil: import flash.events.MouseEvent; usynlig1.addEventListener(MouseEvent.MOUSE_OVER, beveg1); function bevegelse1():void { bilder.x = bilder.x + 5; } function bevegelse2():void { bilder.x = bilder.x - 5; } function beveg1(evt:Event):void { setInterval(bevegelse1, 100); } usynlig2.addEventListener(MouseEvent.MOUSE_OVER, beveg2); function beveg2(evt:Event):void { setInterval(bevegelse2, 100); } Usynlig1 og usynlig2 er to usynlige firkanter man holder musen over or at bildene skal bevege seg. Alle bildene er i et movieclip ved siden av hverandre, og skal bevege seg vannrett til siden utifra hvilket usynlige objekt man holder musen over. Prøvde å bruke setInteval for å få bildene til å bevege seg jevnt, men da stopper det ikke når jeg tar bort musen. Hvordan kan jeg gjøre dette enklest mulig? Noen som har et forslag til hvordan jeg kan gjøre dette med akselerasjon? Lenke til kommentar
molty Skrevet 14. april 2011 Del Skrevet 14. april 2011 Det jeg ville ha gjort var å laget en timer. var timer1:Timer = new Timer(100); var timer2:Timer = new Timer(100); timer1.addEventListener(TimerEvent.TIMER, kjør1); timer2.addEventListener(TimerEvent.TIMER, kjør2); function kjør1(evt:TimerEvent){ bilder.x = bilder.x +5; } function kjør2(evt:TimerEvent){ bilder.x = bilder.x-5; } usynlig1.addEventListener(MouseEvent.MOUSE_OVER, beveg1); usynlig1.addEventListener(MouseEvent.MOUSE_OUT, stop1); usynlig2.addEventListener(MouseEvent.MOUSE_OVER, beveg2); usynlig2.addEventListener(MouseEvent.MOUSE_OUT, stop2); function beveg1(evt:MouseEvent){ timer1.start(); } function stop1(evt:MouseEvent){ timer1.stop(); } function beveg2(evt:MouseEvent){ timer2.start(); } function stop2(evt:MouseEvent){ timer2.stop(); } Hvis det er noe du vil ha forklart eller noe som ikke er riktig, ikke nøl med å spørre. Ta det helst på PM sånn at jeg legger merke til det. - Molty Lenke til kommentar
GunnarGul Skrevet 23. april 2011 Forfatter Del Skrevet 23. april 2011 Takker for svar Det fungerte mye bedre. Begynner å nærme seg noe nå. Problemet nå er jo at bildene ofte stopper midt på, eller at et annet bilde synes litt. Finnes det noen lure måter å "snappe" mellom hvert bilde uten å måtte begynne med avansert matematikk og akselerasjon osv? Lenke til kommentar
molty Skrevet 2. mai 2011 Del Skrevet 2. mai 2011 Hvis du vil ha akselerasjon på, som du skrev i første post her, så må du bruke litt matte. Hvis du vil den skal begynne sakte og gå litt raskere for hver gang kan du gjøre det slik som dette utifra min post: var aks:Number = 0; var maxSpeed:Number = 5; function kjør1(evt:TimerEvent){ if(aks < maxSpeed){ aks++; // plusser på 1 } bilder.x = bilder.x +aks; } function stop1(evt:MouseEvent){ aks = 0; timer1.stop(); } Så kan du bare endre max hastigheten pr pixel (som satt 5) og slikt. Du kan også endre den til å begynne enda saktere med å sette aks = aks+0.5; f.eks. Eller bruke aks+= 0.5; hvis det er riktig skrevet. Husker ikke den korte metoden i hodet så da tar jeg heller en letteste å huske når det gjelder slik med bildet ditt hopper og noen blir synlige der du ikke vil, kan du legge ut filen så jeg får se? Er ikke sikker på at jeg ser problemet ditt. - Molty Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå