Hey,
ich hab da nen ganz blödes Problem mit meinem Programm und zwar folgendes:
Ich möchte eine Spielwelt (jedeglich der Untergrund) zeichnen. Es funktioniert auch alles, bloß habe
ich bemerkt, dass der Speicherverbrauch stetig um ca. ~3Mb die Sekunde ansteigt, das ist natürlich nicht gerade optimal.
Hat eventuell jemand eine Idee woran es eventuell liegt.
Hier mal der Code auf den ich es runter gebracht habe.
Die paintComponent() Methode meines JPanels:
Und hier die beiden Methoden meiner Welt-Klasse drawWorld und drawGrid:
Würde mich über jede Hilfe freuen
mfg Timo
ich hab da nen ganz blödes Problem mit meinem Programm und zwar folgendes:
Ich möchte eine Spielwelt (jedeglich der Untergrund) zeichnen. Es funktioniert auch alles, bloß habe
ich bemerkt, dass der Speicherverbrauch stetig um ca. ~3Mb die Sekunde ansteigt, das ist natürlich nicht gerade optimal.
Hat eventuell jemand eine Idee woran es eventuell liegt.
Hier mal der Code auf den ich es runter gebracht habe.
Die paintComponent() Methode meines JPanels:
Java:
@Override
public void paintComponent(Graphics g){
super.paintComponent(g);
actualWorld.drawWorld(g);
/*
* Sollen Informationen überhaupt gezeigt werden?
*/
if(showInfo){
actualWorld.drawGrid(g);
g.setColor(Color.CYAN);
g.drawString("FPS: "+Long.toString(FPS), getSize().width - 75, 25);
g.drawString("Delta: "+Long.toString(delta / 1000000)+" ms", getSize().width - 75, 40);
}
g.dispose();
}
Und hier die beiden Methoden meiner Welt-Klasse drawWorld und drawGrid:
Java:
@Override
public void drawGrid(Graphics g){
for(int x = 0; x <= (panel.getSize().width / Tile.TILE_WIDTH) && x < max_X_Grid;x++){
for (int y = 0; y <= (panel.getSize().height / Tile.TILE_HEIGHT) && y < max_Y_Grid; y++) {
g.setColor(Color.yellow);
g.drawRect(x*Tile.TILE_WIDTH, y*Tile.TILE_HEIGHT, Tile.TILE_WIDTH, Tile.TILE_HEIGHT);
}
}
}
/*
* Es wird berechnet welcher Abschnitt der Welt zu sehen ist!
*
* Scrollen ist zur Zeit nur gridweise möglich.
*/
@Override
public void drawWorld(Graphics g) {
if (initialized) {
int draw_min_x = draw_min_x = actualPoint.x - (panel.getSize().width / 2);
int draw_min_y = draw_min_y = actualPoint.y - (panel.getSize().height / 2);
int x_grid = x_grid = draw_min_x / Tile.TILE_WIDTH;
int y_grid = y_grid = draw_min_y / Tile.TILE_HEIGHT;
for (int x = 0; x <= (panel.getSize().width / Tile.TILE_WIDTH) && x < max_X_Grid; x++) {
for (int y = 0; y <= (panel.getSize().height / Tile.TILE_HEIGHT) && y < max_Y_Grid; y++) {
if ((x + x_grid >= 0 && y + y_grid >= 0) && (x + x_grid < max_X_Grid && y + y_grid < max_Y_Grid)) {
tileArray[x + x_grid][y + y_grid].drawTile(g, x, y);
} else {
g.setColor(Color.black);
g.fillRect(x * Tile.TILE_WIDTH, y * Tile.TILE_HEIGHT, Tile.TILE_WIDTH, Tile.TILE_HEIGHT);
}
}
}
}
}
Würde mich über jede Hilfe freuen
mfg Timo