gpt4 book ai didi

Java:删除另一个类中的 Activity 键监听器

转载 作者:行者123 更新时间:2023-12-01 13:14:20 25 4
gpt4 key购买 nike

我正在制作一个小游戏,在某个事件中会导致“游戏结束”,我希望玩家在发生这种情况时失去对角色的控制。我在不同的类中使用 key 适配器并将其添加到构造函数中,如下所示:

addKeyListener(new GetKeyStroke(this));

我的游戏结束代码如下所示(位于paint方法中):

if (gameOver) {
g.setFont(pauseFont);
g.setColor(Color.WHITE);
g.drawString("Game Over!", screenSize.width / 2 - 110, screenSize.height / 5);
}

我尝试过使用

removeKeyListener(new GetKeyStroke(this));

但据我所知,这会创建一个新对象,这就是它不起作用的原因。

非常感谢任何帮助

最佳答案

您需要为您添加的 GetKeyStroke 提供某种引用变量。

private GetKeyStroke keyListener = new GetKeyStroke(this);
...
addKeyListener(keyListener);

您可能还想为其提供一个getter,如果您想从另一个类访问它,请说类似

public class One {
private GetKeyStroke keyListener;

public One() {
keyListener = new GetKeyStroke(this);
addKeyListener(keyListener);
}

public GetKeyStroke getKeyListener(){
return keyListener;
}
}

然后您可以将 One 作为对 Two 的引用传递,并使用 getKeyListener 方法获取对同一实例的引用获取KeyStoke

public class Two {
private One one;
private GetKeyStroke keyListener;

public Two( final One one ) {
this.one = one;
keyListener = one.getKeyListener();
}

public someMehod() {
one.removeKeyListener(keyListener);
}
}
<小时/>

也许更合适的设计是使用界面。例子可见here甚至可能是更高级的主题 MVC Design您将来可能会感兴趣。

<小时/>

旁注:

  • 正如我对您的原始帖子的评论中所述:考虑使用 Key Bindings对于 Swing 应用程序。通常,您会遇到 KeyListener 的焦点问题。实际上,Oracle 建议使用键绑定(bind),而不是使用 KeyListener 来实现特定的按键 react 。

关于Java:删除另一个类中的 Activity 键监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22585717/

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