在 libGDX 中刷新 HUD
Refresh hud in libGDX
我的显示器是这样的。中间的图片应该显示玩家当前的武器。我用以下代码添加了图像:
table.add(weaponImage).width(weaponWidth).height(weaponHeight);
在我的 HUD 中,我创建了一个名为“updateWeapon”的方法来更改图像,但是没有用。
public void changeSword(String swordName) {
weaponImage = new Image(new Texture(Gdx.files.internal(swordName)));
System.out.println("Weapon changed");
}
控制台打印出“Weapon changed”,但图像没有变化。
我想那是因为 hud 没有刷新,我该怎么做?
您正在更改已分配引用(或指针,如果您愿意)的引用。
说原来的weaponImage在0x1
地址。 table 被指示显示 0x1
处的任何内容。现在稍后您将 weaponImage 指针更改为 0x5
处的新图像,但 table 取了第一个值。
要更新图像,您需要使用原始 0x1
地址并在那里切换图像。
改变
weaponImage = new Image(new Texture(Gdx.files.internal(swordName)));
到
weaponImage.setDrawable(new TextureRegionDrawable(new Texture(Gdx.files.internal(swordName)));
但是首先抓住那个纹理你不想每次都做一个new
。
我的显示器是这样的。中间的图片应该显示玩家当前的武器。我用以下代码添加了图像:
table.add(weaponImage).width(weaponWidth).height(weaponHeight);
在我的 HUD 中,我创建了一个名为“updateWeapon”的方法来更改图像,但是没有用。
public void changeSword(String swordName) {
weaponImage = new Image(new Texture(Gdx.files.internal(swordName)));
System.out.println("Weapon changed");
}
控制台打印出“Weapon changed”,但图像没有变化。 我想那是因为 hud 没有刷新,我该怎么做?
您正在更改已分配引用(或指针,如果您愿意)的引用。
说原来的weaponImage在0x1
地址。 table 被指示显示 0x1
处的任何内容。现在稍后您将 weaponImage 指针更改为 0x5
处的新图像,但 table 取了第一个值。
要更新图像,您需要使用原始 0x1
地址并在那里切换图像。
改变
weaponImage = new Image(new Texture(Gdx.files.internal(swordName)));
到
weaponImage.setDrawable(new TextureRegionDrawable(new Texture(Gdx.files.internal(swordName)));
但是首先抓住那个纹理你不想每次都做一个new
。