我在为我正在研究的小游戏编写代码时遇到了问题。在下面的代码中,我尝试使用面向对象的编程。 因为我正在使用KeyEvent我认为我需要使用2种方法但是由于某种原因无法找到int key。有人可以帮帮我吗?
class KeyEvt {
void keyPressed (KeyEvent e)
{
int key = e.getKeyCode();
}
}
class Dodger {
public static void main (String args[])
{
boolean GameOver = false;
int obst;
KeyEvt left = new KeyEvt();
do
{
obst = (int) (Math.random() * 4) +1;
if (obst == 1)
{
System.out.println(" ---");
if (KeyEvt.key == KeyEvent.VK_LEFT){}
}
答案 0 :(得分:0)
在您的班级KeyEvt
中,您不会在key
中声明实例变量key
,而是声明方法变量keyPressed
。这个方法变量将“消失”。一旦方法完成。
为了在方法完成后保留值,您需要将其声明为实例变量:
class KeyEvt {
public int key;
void keyPressed (KeyEvent e)
{
key = e.getKeyCode();
}
}
您还需要访问KeyEvt
类的实例,而不是KeyEvt
类本身:
if (left.key == KeyEvent.VK_LEFT){}
显然这缺乏很多封装(key
可由其他人修改),并且由于原始KeyEvent
已经有了密钥代码,因此问题就出现了为什么你需要{{1}毕竟,KeyEvt
类提供了你需要的东西。