Java 和 libgdx : How can I use this variable in two overridden methods?

标签 java libgdx

我遇到了一个大问题,试图弄清楚如何在一个被覆盖的方法中使用一个变量,并在另一个方法中使用它。具体来说,我使用的是libgdx,想在render方法的create方法中使用变量map

这是我的代码:

@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<Image> 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();
}

实际上,我无法在 render 方法中访问 map。我无法创建自己的方法,因为必须在每个方法创建和渲染中调用它。我被困住了,无法自己解决。我有一种感觉,我可以使用 get/set 来做到这一点,但我不太确定我将如何尝试做到这一点......

最佳答案

将 map 声明为全局变量。

private ArrayList<Image> map;

在 create 方法中,像你一样做赋值-

map = TMXLoader.drawMap();

现在在渲染方法中,您可以使用 map 。

关于Java 和 libgdx : How can I use this variable in two overridden methods?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14247229/

相关文章:

java - 什么是 com.singularity.ee.agent.appagent.kernel.spi.c java 代理?

java - 我想使用 assetmanager 来处理图像

java - 如何在 libgdx scene2d 上拖放 Actor ?

javascript - JSP Json ArrayList 到 JavaScript 列表

java - 将 latin1 编码为 UTF8 失败

java - Base64 key - Android Play 商店 apk 发布

android - 使用 SpriteBatch 渲染图像时 ShapeRenderer 颜色停止工作

Java - 在另一个数组中使用数组(使用 LibGDX 的平台游戏)

java - 使用Android获取异步任务JSON时出现空指针异常

java - 将字符串转换为 MAILTO 的 HTML 就绪文本 : URL