Gym.java
public class Gym extends ActiveObject {
public void run() {
...
}
}
GymController.java
public class GymController extends WindowController implements KeyListener{
private Gym gym;
public void begin() {
Gym gym = new gym(canvas, new Location(dx, dy), delay, this);
}
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
if (key == KeyEvent.VK_SPACE) {
gym.run();
}
}
}
在Gym.java文件中有一个对象及其移动代码......我想将它调用到GymController.java文件的keyPressed方法...以便当用户按下空格时对象移动酒吧。 我如何首先将这两个文件链接起来......? 但编译器给我一个错误,说它无法找到符号。 如何正确地将另一个.java文件中的方法调用到当前文件的keyPressed方法中,以便编译...?
答案 0 :(得分:1)
正如评论所指出的,你的问题在于:
public void begin() {
Gym gym = new gym(canvas, new Location(dx, dy), delay, this);
}
它应该是:
public void begin() {
gym = new Gym(canvas, new Location(dx, dy), delay, this);
}
首先,new接受类名,你正在构建一个"模式"中的实际对象。然后,执行Gym gym =...
会在begin()方法的范围内创建一个局部变量。从开始返回时它将被丢弃。
如果您只使用gym
或this.gym
,它会将新实例分配给成员变量。
但是要小心,你的初始健身房实例将创建一个新的健身房控制器实例,这将反过来创建一个新的健身房实例。所以gym.run()不会使用与创建健身房相同的健身房实例。如果这是你的意图,你需要将健身房的this
参考传递给健身房控制器。