因此,我有一个问题,与塔防御游戏,我目前正在制作。我已经发布了下面的部分代码,我在其中遇到了错误。
简而言之,我是用mainMenu开始游戏的,它有一个进入charMenu或退出游戏的按钮。这个屏幕加载得非常好。
现在,当我单击进入charMenu时,收到行"charMenu.draw(g)“上的NullPointerException。如果我只创建其中一个菜单并删除另一个菜单的代码,这对两个菜单都有效,但如果我尝试为这两个菜单都启用代码,我会得到错误,并且无法从调试中获得任何线索。
public class Screen extends JPanel implements Runnable {
public static boolean isMainMenu = true;
public static boolean isCharacterMenu = false;
public static MainMenu mainMenu;
public static CharMenu charMenu;
public void paintComponent(Graphics g) {
if(isMainMenu && !isCharacterMenu){ // Draws the Main Menu
mainMenu.draw(g);
}
if(isCharacterMenu && !isMainMenu){
charMenu.draw(g);
}
if(!isMainMenu && !isCharacterMenu){
//draws the actual game board.
}
}
public void run() {
while(true) {
if(isMainMenu && !isCharacterMenu){//The Main Menu
mainMenu = new MainMenu();
}
if(isCharacterMenu && !isMainMenu)
charMenu = new CharMenu();
if(!isMainMenu && !isCharacterMenu) {
//runs the game board
}发布于 2012-08-12 06:30:23
您正在对一个空引用( charMenu )调用一个方法(draw () ),这就是NPE被触发的原因。
在开始时声明它们应该可以做到这一点。
public static MainMenu mainMenu = new MainMenu();
public static CharMenu charMenu = new CharMenu();更新
您还应该使用运行函数更新变量isCharactereMenu和isMainMenu -例如,在声明charMenu之后-将isCharactereMenu设置为true
https://stackoverflow.com/questions/11918133
复制相似问题