Java Applet knippert als een gek

Pagina: 1
Acties:
  • 39 views sinds 30-01-2008

  • JSchut
  • Registratie: Februari 2002
  • Laatst online: 13-09 14:07
Ik ben sinds kort bezig met java.
Nu ben ik bezig met een simpel spelletje maar waarbij een balletje door het scherm springt.
Maar het appletje knippert als een gek.

Nu heb ik ergens gelezen dat je offscreen kan tekenen maar ik zou mijn god niet weten hoe dat zou moeten.

Ik heb al gezocht maar ik kon niet echt iets vinden wat het ff duidelijk uitlegd.

Kan iemand mij verder helpen?

PSN jschut_82 | Xbox: JSchut82


Verwijderd

Ah, dat is inderdaad een vervelend probleem. Het systeem wat je hiervoor moet gebruiken heet double-buffering.
Het prencipe: je hebt een venster waar je het spel in ziet, en ieder frame dat je maakt zet je niet in dit scherm maar creeer je 'achter de schermen' in een buffer.
Zodra het plaatje in de buffer dan klaar is plaats je de buffer op het scherm.

de code:
ten eerste moet je een methode aanmaken die een standaard functie van Java overneemt. Java roept namelijk bij repaint() zelf de methode update() aan, en deze zorgt ervoor dat het scherm leeg wordt gemaakt en vervolgens er weer op wordt getekend wat er op dat moment nodig is.

100% zeker weten doe ik het niet, maar dacht het iets was als:
code:
1
2
3
4
  public void update()
  {
     this.paint();
  }

hierbij mag je update niet aanroepen, maar doe je gewoon this.repaint() zoals je gewend bent. (repaint() roept update aan.)

ps. gewoon this.paint() mag ook niet.

vervolgens moet je een Image2D maken, maar hoe dat precies gaat weet ik niet meer, moet je ffies in de help kijken.

  • JSchut
  • Registratie: Februari 2002
  • Laatst online: 13-09 14:07
ik heb ernaar gekeken en kheb het geprobeerd te gebruiken maar als ik het op deze manier doe dan blijft mee eerste scherm staan kan iemand het me duidelijk uitleggen

wel alvast bedankt voor de serieuze reacties

PSN jschut_82 | Xbox: JSchut82


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
het idee erachter id dat je eerst een offscreen image maakt in plaats van de hele tijd op het scherm te tekenen. Daarom moet je de methode update overloaden zodat hij niet constant het scherm wit maakt maar telkens als jouw offscreen image klaar is hem over je oude image heen kopieert

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • Noork
  • Registratie: Juni 2001
  • Niet online
ja dan wordt zeker het hele scherm gerepainted. je moet ervoor zorgen dat alleen het gebied waar het balletje zich in begeeft opnieuw wordt getekend

Verwijderd

je repaint het wel, maar je legt daarna als het ware de andere tekening erover heen waardoor je geen knipperen zit.

  • JSchut
  • Registratie: Februari 2002
  • Laatst online: 13-09 14:07
het is dat spel arcanoid wat ik aan het namaken ben
er moeten dus een aatal dingen veranderd worden en alleen die dingen knipperen

PSN jschut_82 | Xbox: JSchut82


  • JSchut
  • Registratie: Februari 2002
  • Laatst online: 13-09 14:07
Bedankt voor de hulp

maar nu het volgende probleem door het bufferen word het appletje erg sloom hij gaa nu niet meer vloeiend heeft iemand hier een oplossing voor

PSN jschut_82 | Xbox: JSchut82


  • JSchut
  • Registratie: Februari 2002
  • Laatst online: 13-09 14:07
laat dit topic maar stoppen ik maak even een nieuwe aan voor mijn nieuwe vraag iedereen wel erg bedankt voor de reacties

PSN jschut_82 | Xbox: JSchut82


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

mja, hoort niet helemaal zo. Maar vooruit.
Pagina: 1

Dit topic is gesloten.