这个问题与AndEngine / Android有关,但也与Java有关。我的游戏中有一个NPC类,当玩家接近他们时,我希望他们通过在他们上方创建一个矩形/文本来显示消息。我创建了多个NPC,并将它们添加到名为NPCbody的数组中。如果它们靠近播放器,我想使用for循环在每个上面绘制一个矩形/文本。我可以这样做,但唯一的问题是,我现在使用这个代码,他们不会脱离现场。它充满了玩家靠近NPC的矩形。那么我怎样才能让我创建的这些矩形只为每个NPC创建ONCE并更新?
try {
if (NPCbody.size() > 0) {
for (int i = 0; i < NPCbody.size(); i++) {
final Rectangle NPCmessageRectangle;
final Text NPCmessageText;
NPCmessageRectangle = new Rectangle(NPCx - 50, NPCy + 175, 200, 50,
vbom);
NPCmessageRectangle.setColor(Color.BLACK);
NPCmessageRectangle.setAlpha(90);
NPCmessageText = new Text(NPCx, NPCy, resourcesManager.smallFont,
"abcdefghijklmnopqrstuvwxyz1234567890.,!?\" ", vbom);
NPCmessageText.setText("");
attachChild(NPCmessageText);
NPCmessageText.setVisible(false);
attachChild(NPCmessageRectangle);
NPCmessageRectangle.setVisible(false);
NPCx = NPCbody.get(i).getPosition().x * 32;
NPCy = NPCbody.get(i).getPosition().y * 32;
NPCmessage = npc.getNPCmessage();
NPCmessageText.setText(NPCmessage);
NPCmessageText.setPosition(NPCx, NPCy + 50);
NPCmessageRectangle.setX(NPCx);
NPCmessageRectangle.setY(NPCy + 50);
if (isDistance(player.getX(), player.getY(), NPCx, NPCy,
150)) {
NPCmessageRectangle.setVisible(true);
NPCmessageText.setVisible(true);
System.out.println("Rectangle set visible for NPC "+i);
} else {
NPCmessageRectangle.setVisible(false);
NPCmessageText.setVisible(false);
}
}
}
} catch (Exception e) {
}
(此代码是重复调用的方法的一部分。)
答案 0 :(得分:0)
我建议在每个NPC类中创建一个“messageDisplayed”变量。该变量将是您创建的文本消息的引用。如果该变量为非null,则跳过创建文本对象。
你必须记住: 删除文本对象。 删除后再次将引用设置为null,以便显示新的矩形。
除此之外,您可能想要创建这些文本气泡形状的池,这样您就不必在每次需要时都继续创建新的气泡形状。