所以我正在制作一个目前制作的塔防游戏的问题。我已经发布了以下部分代码,我发现了错误。
它的概念是我用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
}
答案 0 :(得分:0)
你正在一个空引用(charMenu)上调用一个方法(draw()),这就是触发NPE的原因。
在开始时声明它们应该这样做。
public static MainMenu mainMenu = new MainMenu();
public static CharMenu charMenu = new CharMenu();
<强>更新强>
您还应该使用run函数更新变量isCharactereMenu
和isMainMenu
- 例如在声明charMenu
后 - 将isCharactereMenu
设置为true