首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >draw方法的问题

draw方法的问题
EN

Stack Overflow用户
提问于 2012-08-12 06:23:50
回答 1查看 63关注 0票数 0

因此,我有一个问题,与塔防御游戏,我目前正在制作。我已经发布了下面的部分代码,我在其中遇到了错误。

简而言之,我是用mainMenu开始游戏的,它有一个进入charMenu或退出游戏的按钮。这个屏幕加载得非常好。

现在,当我单击进入charMenu时,收到行"charMenu.draw(g)“上的NullPointerException。如果我只创建其中一个菜单并删除另一个菜单的代码,这对两个菜单都有效,但如果我尝试为这两个菜单都启用代码,我会得到错误,并且无法从调试中获得任何线索。

代码语言:javascript
复制
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
}
EN

回答 1

Stack Overflow用户

发布于 2012-08-12 06:30:23

您正在对一个空引用( charMenu )调用一个方法(draw () ),这就是NPE被触发的原因。

在开始时声明它们应该可以做到这一点。

代码语言:javascript
复制
public static MainMenu mainMenu =  new MainMenu();
public static CharMenu charMenu = new CharMenu();

更新

您还应该使用运行函数更新变量isCharactereMenuisMainMenu -例如,在声明charMenu之后-将isCharactereMenu设置为true

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11918133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档