这个问题是关于 AndEngine/Android 的,但也与 Java 有关。我的游戏中有一个 NPC 类,当玩家靠近它们时,我希望它们通过在它们上方创建一个矩形/文本来显示一条消息。我创建了多个 NPC,并将它们添加到名为 NPCbody 的数组中。如果它们靠近播放器,我想使用 for 循环在它们每个上方绘制一个矩形/文本。我可以做到这一点,但唯一的问题是,使用我现在拥有的这段代码,它们不会脱离场景。它被玩家靠近 NPC 的矩形填充。那么我怎样才能让我创建的这些矩形只为每个 NPC 创建一次并更新呢?
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) {
}
(此代码是重复调用的方法的一部分。)