2010-08-18 45 views
1

OK去除,所以我有此HashMapJava的不是从HashMap的

private Map<String, Player> players = new HashMap<String, Player>(); 

下面是我用它来去除:

 public void destroy() { 

players.remove("Red"); 
os.println(me.getUsername() + "|1|has left|yes|chat"); 

     } 

我说红,因为它只是一个测试现在。我稍后会得到最终的正确答案。无论如何...

我用这个来检查。

if (e.getKeyCode() == KeyEvent.VK_Q) { 
      for (Player playert : players.values()) { 
             c.append("\n < "+playert.getUsername() + " > "); 
         } 
        } 

当我全部由自己..我按Q,我得到:

<Dan> 

然后我的朋友红色的日志中,我按Q ...我得到:

<Dan> 
<Red> 

然后他就离开我按Q,我得到:

<Dan> 
<Red> 

所以......这怎么不起作用?

而且,这里是获取到了init()调用时,在游戏中玩家日志(开始的小程序)代码

public void playerLogin() throws IOException { 

      Random roll = new Random(); 
      int newNo = roll.nextInt(200); 
      // me.getUsername() = "Guest #" + roll.nextInt(110); 
      // String me.getUsername() = getParameter("name"); 

      me = new Player(); 
      me.setUsername(getParameter("name")); 
      me.setPlayerImage(ImageIO.read(getClass().getResource("me.gif"))); 
      me.setX(256); 
      me.setY(256); 
      me.setMap(1); 
      me.setCommand("move"); 
      players.put(me.getUsername(), me); 

      repaint(); 

      System.out.println(me.getUsername() + " was added. player: " + me); 
      os.println(me.getUsername() + "|" + me.getX() + "|" + me.getY() + "|" 
         + me.getMap() + "|" + me.getCommand()); 

      attack = 4; 
      defense = 5; 
      gold = 542; 
      level = 1; 
      exp = 53; 

     } 
+1

你也应该发布你的代码,它显示了当你登录时如何将玩家添加到玩家对象中的方式。 – 2010-08-18 20:24:39

+2

这个代码实际上调用了destroy方法。 – Steve 2010-08-18 20:25:44

+0

当用户退出小程序所在的网页时,将调用destory方法。我编辑了我的帖子以包括玩家登录时发生的情况 – nn2 2010-08-18 20:26:56

回答

2

换句话说,您的Applet#destroy()方法在您期望它被调用的那一刻不被调用?您应该使用Applet#stop()destroy()仅在有问题的对象符合GC和/或关闭整个浏览器实例(因此不仅是当前页面/选项卡)时才被调用。只要浏览器实例运行,JVM就可以继续运行。

+0

它被调用。但它现在不起作用的原因是因为我得到了另一个错误。 tansk – nn2 2010-08-18 20:55:06

+0

不过,你应该更喜欢'stop()'。问题究竟是什么?现在解决了吗?顺便说一句,现在我再次阅读您的代码,也许这是模糊的代码,但您是否意识到applet实例并不是在不同访问者之间共享的? – BalusC 2010-08-18 20:59:09

1

当你用点击q ...你正在检查的players内容但你的电话号码是destroy()?您是否明确地在代码中的任何地方拨打了destroy()

+0

当用户退出网页.. destroy()被称为... – nn2 2010-08-18 20:34:56