我有点问题。
我有3个班级的外观"喜欢"这样:
public class Gun{
public void Shot(){
// shoot code
}
public void RenderGun()
{
// render code
}
// more methods
}
public class GameManager
{
Gun gun;
public GameManager()
{
gun = new Gun();
}
// methods using GunClass methods.
}
public class HudScreen
{
Gun gun;
public HudScreen()
{
gun = new Gun();
}
public void GunShotButton()
{
gun.Shoot();
}
}
问题是我有两个Gun对象,我希望有一个,但在HudScreen和GameManager这两个类中使用它。
所以,如果我在GameManager中创建一个新的Gun对象,如何" call"这个对象来自HudScreen类?
谢谢,MM。
答案 0 :(得分:1)
以这种方式更改构造函数:
public GameManager(Gun gun) {
this.gun = gun;
}
和HudScreen
类相同。
然后在一些主类:
class Main {
public static void main(String[] args) {
Gun gun = new Gun();
HudScreen hudScreen = new HudScreen(gun);
GameManager gameManager = new GameManager(gun)
}
}
当前main
方法被认为是进行初始化的顶级方法。这可能是一些其他方法,其中创建了Gun
,GunManager
和HudScreen
的对象。
答案 1 :(得分:1)
GameManager构造函数
public GameManager(Gun gun){
this.gun = gun;
}
HudScreen构造函数
public HudScreen(Gun gun){
this.gun = gun;
}
从创建Gun对象的main方法中,您可以将其传递给GameManager和HudScreen的构造函数
public static void main() {
Gun gun = new Gun();
HudScreen hudScreen = new HudScreen(gun);
GameManager gameManager = new GameManager(gun)
}
如果您不想以相同的方法创建GameManager和HudScreen,但仍想使用相同的Gun对象,那么您可以这样做 1.初始化Gun对象 2.在GameManager和Hudscreen上你可以在构造函数上传递它,也可以直接将它传递给这些类中的方法。 例如假设你想让GameManager构造函数接收新创建的Gun并将相同的枪传递给Hudscreen.GunShotButton。我希望你在这里得到一个线索 -
public class Gun{
public void Shot(){
// shoot code
}
public void RenderGun()
{
// render code
}
// more methods
}
public class GameManager
{
Gun gun;
public GameManager(Gun gun)
{
this.gun =gun;
}
// methods using GunClass methods.
}
public class HudScreen
{
public HudScreen()
{
}
public void GunShotButton(Gun gun)
{
gun.Shoot();
}
}
答案 2 :(得分:-1)
将ScreenController注册到每个NiftyGUI屏幕。通过创建实现de.lessvoid.nifty.screen.ScreenController接口及其抽象方法的Java类来创建ScreenController。