如何在另一个类中使用一个类的实例:Greenfoot

时间:2014-05-15 00:22:42

标签: java methods instance greenfoot

我现在正在使用Greenfoot,学习Java。当涉及到静态/​​非静态时,我非常苛刻,而且我也很喜欢实例。

在Greenfoot,我有一个世界级的,我们称之为 World 。现在我有另一个名为 Car 的类和一个子类 Redcar 。最后,我有一个 Button 类。

如果你熟悉Greenfoot,我已经创建了一个名为 redcar (只是小写)的Redcar实例,并通过addObject()将其添加到 World ; < / p>

public World() { 

    super(1000, 200, 1); 

    Redcar redcar = new Redcar();
    Button button = new Button();

    addObject(redcar, 45, 45);
    addObject(button, 960, 175);
}

Car 类中,其中包含以下内容

public class Car extends Actor {

    int carSpeed = 0;

    public void drive() {
        carSpeed++;
        move(carSpeed);
    }
}

如果从 Redcar 调用,每次调用驱动器时它都会进一步移动 Redcar 。我希望在单击 Button 时发生这种情况。在我的 World 类中,我希望设置一些效果:

if (Greenfoot.mouseClicked(button)) {
    redcar.drive();
}

但是,如果将其放在 World 构造函数中,则在运行Greenfoot项目时它不会运行。我已经尝试将它放在while循环中,以便它不断寻找鼠标点击,但这不起作用,实际上它实际上崩溃了Greenfoot。

很抱歉,如果这个问题措辞混乱,我会在必要时进行修改。基本上,我的问题是这个。 如何调用类的方法来处理实例,从另一个类?例如,从按钮类

开始处理redcar(实例)的drive()方法

1 个答案:

答案 0 :(得分:0)

好吧,如果我理解你的问题,你需要提供实例的可见性;像这样的东西,

private Redcar redcar;                   // <-- if you want to access redcar in World.
public World() { 
  super(1000, 200, 1); 
  redcar = new Redcar();                    // <-- Use the redcar field
  Button button = new Button(this, redcar); // <-- if you want to access this World  
                                            // instance and redcar in Button.
  addObject(redcar, 45, 45);
  addObject(button, 960, 175);
}