2013-03-08 35 views
0

我在InputProcessor的touchDown方法中遇到了一些问题。当我尝试用它生成所有可能的枚举...在TouchEvent中枚举行为奇怪

public class Memoration implements ApplicationListener, InputProcessor { 

public static enum Screen {GAME, MENU} 
Screen screen; 

@Override 
public void create() { 
    screen = Screen.MENU; 
    Gdx.app.log("onCreate", "works"); 
    Gdx.input.setInputProcessor(this); 
} 

@Override 
public void dispose() { 
} 

@Override 
public void render() { 
    // bla bla bla 
} 

@Override 
public boolean touchDown(int screenX, int screenY, int pointer, int button) { 
    Gdx.app.log("touch", "down"); 
    if(screen == null) 
     Gdx.app.log("screen", "null"); 
    if(screen == Screen.MENU) 
     Gdx.app.log("screen", "menu"); 
    if(screen == Screen.GAME) 
     Gdx.app.log("screen", "game"); 
    return false; 
} 
} 

日志告诉我们“的onCreate:workds”,“摸:下”,“画面:空”,“屏幕:菜单”和“screen:game”

+0

似乎代码是不完整。你可以发布整个活动吗? – Gyonder 2013-03-08 14:59:32

+0

即使我删除了我的所有代码,只有上面的代码才会发生! – Daniel 2013-03-08 15:06:19

回答

3

您的课程名为记忆和实施InputProcessor。但是,在您的create()回调中,您正在创建另一个回忆实例并将其设置为输入处理器,因此它就是获取回调的实例。并且,因为create()没有被调用,所以屏幕从不初始化。

试试这个...

@Override 
public void create() { 
    screen = Screen.MENU; 
    Gdx.app.log("onCreate", "works"); 
    Gdx.input.setInputProcessor(this); 
} 
+0

谢谢你的回答棒!欣赏它,但不幸的是它现在不工作,同样的结果! – Daniel 2013-03-08 15:32:00

+0

奇数。适用于我。这是我使用的代码(应该独立工作)。 http://pastebin.com/mAyg2qFY – 2013-03-08 15:33:52

+0

是的,它也适用于我! (除了导入com.badlogic.gdx.backends.lwjgl.LwjglApplication; import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration;) 我将检查我在做什么我的代码错了! 谢谢你的帮助。 – Daniel 2013-03-08 15:38:15