360Boarder
Registered +
- Registriert
- Jan. 2007
- Beiträge
- 166
Hi Leute. Ich hab ein Spiel programmiert bei dem ich einen Canvas anlege und ein Endlosgif als Hintergrund laufen lasse, dann lade ich die Spielfigur auch in Form eines Endlosgifs (die Füße bewegen sich vor und zurück) rein. Das funktioniert auch soweit. Doch wenn ich das Prog länger laufen lasse bekomm ich immer einen OutofMemoryError.
Ich glaube zu wissen woran es liegt: Die Endlosgifs werden immer neu reingeladen und immer neu gezeichnet. Das braucht so viel Speicher...
Wie kann ich es z.B schaffen das, das Hintergrundgif nur ein mal gezeichnet wird? Denn da es ein Endlosgif ist läuft es ja sowieso weiter, oder? Aber so würde es nicht so viel Speicher brauchen, denk ich.
Ich hab schon einiges versucht aber mittlerweile bin ich am Verzweifeln.
Bitte um Hilfe.
Hier mal der Code meiner Canvas Klasse:
Game.Hintergrund //Endlosgif für Hintergrund
Game.Figur //Endlosgif der Spielfigur
Ich glaube zu wissen woran es liegt: Die Endlosgifs werden immer neu reingeladen und immer neu gezeichnet. Das braucht so viel Speicher...
Wie kann ich es z.B schaffen das, das Hintergrundgif nur ein mal gezeichnet wird? Denn da es ein Endlosgif ist läuft es ja sowieso weiter, oder? Aber so würde es nicht so viel Speicher brauchen, denk ich.
Ich hab schon einiges versucht aber mittlerweile bin ich am Verzweifeln.
Bitte um Hilfe.
Hier mal der Code meiner Canvas Klasse:
Game.Hintergrund //Endlosgif für Hintergrund
Game.Figur //Endlosgif der Spielfigur
Code:
//START// Imports
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.io.*;
import java.awt.print.*;
import java.awt.event.MouseEvent.*;
import java.awt.image.*;
//ENDE// Imports
//START//////////////
//Class: MyCanvas //
///////////////////////
class MyCanvas extends Canvas implements MouseMotionListener, MouseListener,
KeyListener {
Toolkit toolkit = Toolkit.getDefaultToolkit();
//START// paint
public void paint(Graphics g) {
//START// Menübild zeichnen
Game.Menuebild = toolkit.getImage("Titelbild.gif");
if (Game.start == 0) {
if (Game.Menuebild != null) {
g.drawImage(Game.Menuebild, 0, 22, this);
}
}
//ENDE// Menübild zeichnen
//START// Grafiken im Spiel zeichnen
if ((Game.start == 1) && (Game.endestart == 0)) {
//START// Hintergrund des Spiels zeichnen
Game.Hintergrund = toolkit.getImage("Bild.gif");
if (Game.Hintergrund != null) {
g.drawImage(Game.Hintergrund, 0, 22, this);
}
//ENDE// Hintergrund des Spiels zeichnen
//START// Figur des Spiels zeichnen
switch (Game.figur) {
case 1:
Game.Figur = toolkit.getImage("Figur1.gif");
break;
case 2:
Game.Figur = toolkit.getImage("Figur2.gif");
break;
case 3:
Game.Figur = toolkit.getImage("Fig3.gif");
break;
case 4:
Game.Figur = toolkit.getImage("Figur4.gif");
break;
default:
}
if (Game.Figur != null) {
if ((Game.ende == 0) && (Game.ducken == 0) &&
(Game.springen == 0)) {
g.drawImage(Game.Figur, Game.fx, Game.fy, this);
}
}//ENDE// Figur des Spiels zeichnen
}//ENDE// Grafiken im Spiel zeichnen
} //ENDE// paint
}
//ENDE/////////////
//Class: MyCanvas //
////////////////////