gpt4 book ai didi

android - 分离 child ,更新和附加? AndEngine, 安卓

转载 作者:行者123 更新时间:2023-11-29 00:30:59 25 4
gpt4 key购买 nike

engine.registerUpdateHandler(new TimerHandler(0.2f,
new ITimerCallback() {
public void onTimePassed(final TimerHandler pTimerHandler) {
pTimerHandler.reset();
Rectangle xpRect = new Rectangle(30, 200,
(float) (((player.getXp()) / (player
.getNextLevelxp())) * 800), 40, vbom);
HUD.attachChild(xpRect);
}
}));

到目前为止,我在我的 createHUD 方法中有这个。这非常简单,它创建了一个矩形来显示玩家的 xp 与下一级别所需的 xp 的关系,并将其附加到 HUD。唯一的问题是旧矩形永远不会被删除。我怎样才能拥有一个像那个可以 self 更新并删除旧矩形的矩形?

最佳答案

如果您过于频繁地使用 detachChild() 或任何其他分离方法,您迟早会遇到问题。特别是因为分离 只能在更新线程 上进行。您永远不会知道您的矩形何时会再次分离。因此,为了节省大量附加和分离操作,请重复使用矩形:

i) 将 Rectangle 的引用保存在某处(作为全局变量,例如在您的 Player 类中)。

ii) 在开始时加载你的东西时也初始化矩形:

 Rectangle xpRect = new Rectangle(30, 200, 0, 40, vbom);   // initialize it
HUD.attachChild(xpRect); // attach it where it belongs
xpRect.setVisible(false); // hide it from the player
xpRect.setIgnoreUpdate(true); // hide it from the update thread, because you don't use it.

此时,将矩形放在哪里或它有多大都无关紧要。唯一重要的是它在那里。

iii) 现在,当您想向玩家展示他的 XP 时,您只需使其可见

 public void showXP(int playerXP, int nextXP){
float width= (float) ((playerXP / nextXP) * 800); // calculate your new width
xpRect.setIgnoreUpdate(false); // make the update thread aware of your rectangle
xpRect.setWidth(width); // now change the width of your rectangle
xpRect.setVisible(true); // make the rectangle visible again
}

iv) 当您不再需要它时:为了使其再次不可见,只需调用

  xpRect.setVisible(false);     // hide it from the player
xpRect.setIgnoreUpdate(true); // hide it from the update thread, because you don't

当然,您现在可以随意使用 showXP() 方法,并在您的 TimerHandler 中使用它。如果你想要一个更完整的外观效果,你可以这样做:

 public void showXP(int playerXP, int nextXP){
float width= (float) ((playerXP / nextXP) * 800); // calculate your new width
xpRect.setIgnoreUpdate(false); // make the update thread aware of your rectangle
xpRect.setWidth(width); // now change the width of your rectangle
xpRect.setVisible(true);

xpRect.registerEntityModifier(new FadeInModifier(1f)); // only this line is new
}

其实和上面的方法是一样的,只是在最后一行做了一点改动,让矩形看起来更平滑了一点......

关于android - 分离 child ,更新和附加? AndEngine, 安卓,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15751808/

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