[英]How to ensure that at least one of two methods in Java class is overridden?
[英]Java and libgdx: How can I use this variable in two overridden methods?
我遇到一個很大的問題,試圖弄清楚如何在一個覆蓋的方法中使用變量,並在另一個方法中使用它。 具體來說,我正在使用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進行操作的感覺,但是我不太確定如何嘗試執行此操作...
將地圖聲明為全局變量。
private ArrayList<Image> map;
在create方法中,像您一樣進行分配-
map = TMXLoader.drawMap();
現在,在渲染方法中,您可以使用地圖。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.