2013-03-14 58 views
0

我有包含主类对象的依赖(与听众,在libgdx)

registerscreen = new registerScreen(this); 
emailRegisterscreen = new emailRegisterScreen(this); 

registerScreen包含emailButton,向监听器,在构造函数中提出:

emailButton.addListener(new ClickListener() { 
     @Override 
     public void touchUp(InputEvent event, float x, float y, int pointer, int button) { 
      super.touchUp(event, x, y, pointer, button); 
      Gdx.app.log("registerscreen", "email clicked"); 
      gameHolder.setScreen(gameHolder.emailRegisterscreen); 
     } 
    }); 

gameHolder是主要的类。

现在,以上示例仅适用于在emailScreen之前初始化emailRegisterscreen(上面的代码段不起作用)。我想知道是否有可能使它工作,并仍然首先定义寄存器屏幕?

我猜Java使用当前值gameHolder.emailRegisterscreen而不是对它的引用或其他东西。

+1

我不确定你到底在问什么,它是否返回空指针异常?它什么都不做?在调用touchUp方法时,匿名类将使用gameHolder的当前值。 – Jyro117 2013-03-14 21:09:53

+0

*“我在猜测Java使用'gameHolder.emailRegisterscreen'的当前值而不是引用它或其他东西。”*否,情况并非如此,Java在执行时使用该字段的值。所以注册的顺序(在你的示例代码片段中)并不重要。我猜你的代码还有其他问题。你可能想详细说明什么是不工作的,你是否有错误,是否没有发生? – Veger 2013-03-15 09:05:03

回答

0

Aaaand我已经想通了。

我有一个线

Gdx.input.setInputProcessor(stage); 

在我的屏幕的两个构造函数。这导致第二个屏幕覆盖输入处理器,而用户正在显示第一个屏幕。 (所以我没有错误!)

修复:

@Override 
public void show() { 
    Gdx.input.setInputProcessor(stage); 
} 

将此添加到我的两个屏幕。