gpt4 book ai didi

java - Libgdx/Java 继承问题

转载 作者:行者123 更新时间:2023-12-02 04:59:35 25 4
gpt4 key购买 nike

我目前正在使用 libgdx 和 java 开发一个 android 项目,并且遇到了一个问题,我不确定哪里出了问题。我有一个扩展小部件的基类。该基类有一个 protected 成员,该成员在每个派生类的 act() 方法中设置,但 statBar 基类在其自己的绘制方法中使用该成员。问题是,当调用基类方法时,成员不应该是 0。我错过了什么?

基类:

public abstract class statBar extends Widget {
protected Color color;
protected Color darkColor;
protected Combatant character;

protected float currentFillWidth;
private Drawable fullBar;
privates Drawable emptyBar;

public statBar(Color color, Combatant character, Skin skin){
this.character = character;
this.color = color;
this.darkColor = color.cpy().mul(0,0,0,.2f);
this.fullBar = skin.newDrawable("statBar", this.color);
this.emptyBar = skin.newDrawable("statBar", this.darkColor);
}

@Override
public void draw(Batch batch, float parentAlpha) {
float x = getX();
float y = getY();
float width = getWidth();
float height = getHeight();

// draw current fill box
fullBar.draw(batch, x, y, currentFillWidth, height);

// if not full, draw empty bar portion
if (currentFillWidth < width) {
emptyBar.draw(batch, x+currentFillWidth, y, width-currentFillWidth, height);
}
}
}

派生类:

public class HealthBar extends statBar {
public HealthBar(Combatant character, Skin skin) {
super(Color.RED, character, skin);
}

@Override
public void act(float delta) {
super.act(delta);
currentFillWidth = getWidth() * (character.getCurHP() / character.getMaxHP());
}
}

最后,这就是我实例化栏的方式,它被添加到屏幕上更大的 GUI 表格中,但实际上其余的都是无关紧要的

ui.add(new HealthBar(c, skin));

c 是玩家队伍中当前角色的迭代。当马力满时,一切都显示良好,但当你不满时,它会把栏拉空。调试告诉我,当调用基类绘制方法时,currentFillWidth 再次为 0,而本不应该为 0。关于继承,我缺少什么:基类方法没有从派生类获取更新的成员值?当我在 ui.draw 之前在渲染方法中调用 ui.act 时,Libgdx 会调用对小部件的操作。我什至尝试重写派生类中的绘制并强制执行 super.draw 调用。结果相同。

最佳答案

删除括号

currentFillWidth = getWidth() * (character.getCurHP() / character.getMaxHP());

所以

currentFillWidth = getWidth() * character.getCurHP() / character.getMaxHP();

关于java - Libgdx/Java 继承问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28413959/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com