29. august 2004 - 16:58Der er
5 kommentarer og 1 løsning
Vente på at repaint bliver færdig.
Hej,
Jeg ønsker at tegne en figur der flytter sig. For at figureren ikke øjeblikkeligt flytter fra start til slut, bruger jeg Thread.sleep() metoden. Mit problem er at sleep metoden (åbentbart) også bremser repaint'ingen af billedet, og derfor sker der stadig ingen opdatering af billedet imellem start og slut.
Mit spørgsmål er så om der ikke findes en måde at få programmet til at vente på at repaint er færdig og så gå videre med udførelsen.
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Jeg vil gribe det at lave en animation an på en anden måde. Du skal sørge for at din frame bliver opdateret (kalder repaint()) hvert XX-antal ms. (hver 30 ms giver 33 frames/second, som er normalen). Så skal du blot lave en anden tråd til at flytte koordinaterne på den figur (det stykke grafik) som skal flyttes / animeres.
Giver det nogen mening?
Du må under alle omstændigheder ikke sætte en Thread.sleep(XXXX) ind i din repaint-metode, den skal kunne afvikles på meget få brøkdele af et sekund.
Jeg har gjort som du foreslår, og det virker som den rigtige måde at gøre det på.
Updateringen af billedet går fint igang og dens tråd kører. Men når jeg så trykker med musen for at flytte min figur så er det som om den tråd har højere prioritet, den pauser nemlig repaint tråden og udfører sig så derefter, hvorefter repaint tråden går igang igen.
Jeg har en System.out i repaint metoden og en i MouseListeneren. Outputtet så ca. således ud:
repaint repaint repaint repaint (Der trykkes med musen) mouselistener mouselistener mouselistener mouselistener (Mouselisteren bliver færdig) repaint repaint repaint repaint
Det ville være perfekt hvis man kunne få den til at udføre de to tråde så de skiftedes, ala:
Nå, jeg fandt ud af det. Det var fordi at jeg kørte mouselistener delen i hovedtråden, hvis det bliver lagt ind i en seperat tråd som repaint delen skiftes de pænt ad
Smid et svar corholio så får du de 60 point
Synes godt om
Slettet bruger
30. august 2004 - 21:44#6
ok, takker :-)
Synes godt om
Ny brugerNybegynder
Din løsning...
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.