2014-10-30 29 views
1

我試圖用一個TextField得到一些用戶輸入:無法顯示用戶輸入一個文本框

public void render() { 
    Gdx.gl.glClear(GL11.GL_COLOR_BUFFER_BIT); 
    Gdx.gl.glClearColor(0, 0, 0, 0); 

    batch.begin(); 
    batch.end(); 
    stage = new Stage(); 
    Gdx.input.setInputProcessor(stage); 
    Skin skin = new Skin(Gdx.files.internal("assets/uiskin.json")); 

    TextButton btnLogin = new TextButton("Click", skin); 
    btnLogin.setPosition(300, 300); 
    btnLogin.setSize(300, 60); 
    btnLogin.addListener(new ClickListener() { 
     public boolean touchDown(InputEvent e, float x, float y, int point, int button) { 
      System.out.println(txfUsername.getText()); 
      return false; 
     } 
    }); 

    txfUsername = new TextField("", skin); 
    txfUsername.setPosition(300, 250); 
    txfUsername.setSize(300, 40); 

    stage.addActor(txfUsername);   
    stage.addActor(btnLogin); 

    stage.act(); 
    stage.draw(); 
} 

我得到的是一個空白領域。用戶無法以任何方式與其進行交互。

我按照this video的說明操作 如何使文本框可編輯?

+1

按鈕作品最後版本? – cfrick 2014-10-30 19:56:01

+0

是的,當文本與TextField關聯時它正在工作 – Twile 2014-10-30 20:13:34

回答

3

您在render方法中使用txfUsername = new TextField ("", skin);。這將在每個渲染器上從頭創建一個新的TextField。

public void render() { 
    Gdx.gl.glClearColor(0, 0, 0, 1); 
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 


    batch.begin(); 
    // do other rendering ... 
    batch.end(); 

    Gdx.app.log("MyTextField", txfUsername.getText()); 

    stage.act(Gdx.graphics.getDeltaTime()); 
    stage.draw(); 
} 

在你的類變量:

private TextButton btnLogin; 
TextField txfUsername; 

在你的方法showcreate(不render):

@Override 
public void show() { 

    btnLogin = new TextButton("Click", skin); 

    btnLogin.setPosition(300, 300); 
    btnLogin.setSize(300, 60); 
    btnLogin.addListener(new ClickListener() { 
     public boolean touchDown(InputEvent e, float x, float y, int point, int button) { 
      System.out.println(txfUsername.getText()); 
      return false; 
     } 
    }); 

    txfUsername = new TextField("", skin); 
    txfUsername.setPosition(300, 250); 
    txfUsername.setSize(300, 40); 

    stage.addActor(txfUsername);   
    stage.addActor(btnLogin); 
} 

使用txfUsername.getText();田間

編輯寫的:我不知道你的工作方式ED與GL11,如果GL10,我能理解你一個發生故障,如果你在GL10得到錯誤,你應該更新libgdx,GL10是一個界面,我認爲在libgdx尚未帶來

+0

這很好,謝謝! – Twile 2014-10-30 20:46:42

+0

@Twile歡迎來到StackOverflow!如果這個答案解決了你的問題,請接受它。 – 2014-10-31 12:32:51