2 Stimmen

Java und libgdx: Wie kann ich diese Variable in zwei überschriebenen Methoden verwenden?

Ich habe ein großes Problem, da ich versuche herauszufinden, wie ich eine Variable in einer überschriebenen Methode verwenden und auch in einer anderen Methode verwenden kann. Konkret verwende ich libgdx und möchte die Variable map sowohl in der Methode create als auch in der Methode render verwenden.

Hier ist mein Code:

@Override
public void create() {
    batch = new SpriteBatch();

    background = new TextureAtlas(
            Gdx.files.internal("data/background/background.pack"),
            Gdx.files.internal("data/background/"));
    bg = background.findRegion("Background");

    t = TMXLoader.readTMX("data/world/World.tmx");

    ArrayList map = TMXLoader.drawMap();

    camera = new OrthographicCamera(WIDTH, HEIGHT);
    camera.position.set(WIDTH / 2, HEIGHT / 2, 0);
    camera.update();
}

@Override
public void render() {
    Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);

    BufferedImage image = new BufferedImage(20, 20,
            BufferedImage.TYPE_INT_ARGB);
    Graphics2D g2d = (Graphics2D) image.getGraphics();

    batch.begin();
    for (int i = 0; i < WIDTH; i += bg.getRegionWidth()) {
        for (int j = 0; j < HEIGHT; j += bg.getRegionHeight()) {
            batch.draw(bg, i, j);
        }
    }

    for (int x = 0; x < t.width; x++) {
        for (int y = 0; y < t.height; y++) {
            for (Image tile : map) {
                float[] scale = getScale();

                Image scaledTile = tile.getScaledInstance(
                        (int) (t.tilewidth * scale[0]),
                        (int) (t.tileheight * scale[1]), Image.SCALE_FAST);
                g2d.drawImage(scaledTile, x, y, null);
            }
        }
    }
    batch.end();
}

Wie es jetzt ist, kann ich nicht auf map in der render Methode zugreifen. Ich kann keine eigene Methode erstellen, da sie in jeder Methode create und render aufgerufen werden müsste. Ich stecke fest und kann es alleine nicht herausfinden. Ich habe das Gefühl, dass ich ein get/set verwenden könnte, um dies zu erreichen, aber ich bin mir nicht ganz sicher, wie ich das versuchen sollte...

1voto

Malakai Punkte 81

Map als globale Variable deklarieren.

private ArrayList map;

Im Create-Methodenabschnitt die Zuweisung wie bisher vornehmen-

map = TMXLoader.drawMap();

Jetzt kannst du im Render-Methodenabschnitt die Karte verwenden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X