为数组元素创建和更新对象? Android的

时间:2013-04-23 22:56:12

标签: java android arrays andengine

这个问题与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) {

    }

(此代码是重复调用的方法的一部分。)

1 个答案:

答案 0 :(得分:0)

我建议在每个NPC类中创建一个“messageDisplayed”变量。该变量将是您创建的文本消息的引用。如果该变量为非null,则跳过创建文本对象。

你必须记住: 删除文本对象。 删除后再次将引用设置为null,以便显示新的矩形。

除此之外,您可能想要创建这些文本气泡形状的池,这样您就不必在每次需要时都继续创建新的气泡形状。