![]() |
|
|
Themen-Optionen |
|
|
Nach oben #1 |
|
Mensch
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.710
|
Ich bin dabei ein kleines Spielchen zu programmieren.
Ich hab also meine Playground-Klasse welche von Canvas erbt. Der hab ich ein JPanel gegeben. Dann hol ich mir die Graphics und fang an meine Figuren darauf zu zeichnen. Wenn ich nun ein Hintergrundbild hinzufügen will, dann steigt meine CPU-Last auf 30% und das obwohl außer Background nur eine kleine Figur über den Bildschirm läuft. Ich zeichne den Background praktisch jedes mal neu, so wie die Figur. Daher vermute ich, dass das 640x480 PNG-Bild des Hintergrunds daran schuld ist. Ohne den Hintergrund läufts ohne merkbare CPU-Last. Hat jemand eine Idee wie ich das anders lösen könnte? PS: Das laden der Grafik selbst hab ich über ne Hashmap schon gelöst, sprich er lädt das Bild einmal und holt es dann nur noch aus dem Speicher, daran sollte es also auch nicht liegen. Für jede Idee dankbar!
__________________
I did it my way - Senseless-Blog |
|
|
|
|
|
Nach oben #2 |
|
Erfahrener Benutzer
Registriert seit: 08.01.2006
Ort: Mannheim
Beiträge: 481
|
Zwar keine Ahnung von Java, aber wenn du ein weiteres Canvas einfach darüber legst un nur das neu zeichnen lässt?
__________________
Jan info.malte-gerth.de ================================= Nutzt bitte lieber Jabber statt ICQ: malte.gerth@jabber.cz |
|
|
|
|
|
Nach oben #3 |
|
Erfahrener Benutzer
Registriert seit: 30.03.2006
Ort: Pfinztal
Beiträge: 355
|
Zeichne den Hintergrund in einen Puffer.
Es gibt da beispielsweise BufferedImage. Du kannst auch im Paint nur die Teile neu zeichnen, die betroffen sind, also aus deinem Bild-Puffer erst das zeichnen, wo de Spielfigur ware (ist ja auch ein deutlich kleinerer Ausschnitt) und dann die Spielfigur selbst an der neuen Position neu zeichnen.
__________________
Open Sourcing the Online Gaming Universe PHP/SQL/Java/C++/Assembler. Seit Jahren Mitglied und Entwickler in einem der wohl größten Java-Projekte der Welt: http://weblogs.java.net/blog/hansmul...e_desktop.html |
|
|
|
|
|
Nach oben #4 |
|
Mensch
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.710
|
Ich hab die Bilder schon als BufferedImage in einer Hashmap, spare mir also das Neuladen der Bilder.
Hast du irgendwo ein Beispiel, wie ich nur ein Teil des Bildes neu zeichnen lassen kann? Darüber hatte ich ja auch schon nachgedacht...
__________________
I did it my way - Senseless-Blog |
|
|
|
|
|
Nach oben #6 |
|
Mensch
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.710
|
Ok
Also ich habs erstmal hinbekommen, da ich mit subimage() recht erfolgreich nur kleine Teile neu malen konnte. Was kann ich denn anstelle von Canvas nutzen? Weil eigentlich wollte ich doch Swing nutzen. Oder wäre für ein Spielchen doch eher AWT geeignet? Falls mal wer wirklich in den Sourcecode schauen will, ist im Anhang. Es funktioniert bisher nicht viel, aber man kann grob erkennen, was es mal werden soll Ich hab als "Leitpfaden" übrigens ein Space Invader Tutorial verwendet, welches aber leider nicht mehr wirklich uptodate ist.
__________________
I did it my way - Senseless-Blog |
|
|
|
|
|
Nach oben #7 |
|
Erfahrener Benutzer
Registriert seit: 02.02.2005
Beiträge: 514
|
Statt Canvas kannst du z. B. ein einfaches JPanel verwenden. Wenn du Swing (light) und AWT (heavy) mischst, kann es zu bösen Überlagerungen und Darstellungsfehlern kommen.
Hier findest du ein sehr gutes Tutorial http://www.ralf-bauer.org/java/tutorial/Tutorial.zip Schau erstmal, ob du damit zurecht kommst. Falls nicht, werde ich mir deinen Code mal genauer ansehen (hab ihn bis jetzt nur überflogen, ist aber für ein einfaches 2D Game und für den ersten Versuch viel zu kompliziert gehalten Geändert von Gottzilla (19.05.2008 um 07:18 Uhr). |
|
|
|
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Hintergrundbild in einer JTextArea | VipViper2000 | Desktop-Applikationen und Grafik | 16 | 14.03.2007 23:43 |