2014-01-28 13 views
5

ich setText verwenden kann („AAO“), aber wenn ich auf meiner Tastatur eingeben ist es nicht angezeigt, das nicht funktioniert entwederSonderzeichen in Libgdx des Textfeld funktionieren nicht

  public void keyTyped(TextField textField, char key) { 
       JOptionPane.showMessageDialog(new JFrame(), key); 
      } 

Das Merkwürdige ist, dass es nicht auf Mac funktioniert, aber es funktioniert unter Windows, hat jemand eine Antwort dafür? Danke!

Hier ist eine andere Frage mit einem ähnlichen Thema!

Wie erhalten Sie Eingaben von Sonderzeichen in Libgdx?

Ich habe versucht, den ASCII-Wert zu erhalten und es durch

Gdx.input.isKeyPressed(ascii value); 

Puting, aber es funktioniert nicht. Ich habe meine Projektkodierung auf UTF-8 eingestellt und kann Sonderzeichen wie åäö drucken.

Edit: Ich habe versucht, diese

Gdx.input.setInputProcessor(new InputProcessor() { 

     @Override 
     public boolean keyDown(int keycode) { 
      // TODO Auto-generated method stub 
      return false; 
     } 

     @Override 
     public boolean keyUp(int keycode) { 
      // TODO Auto-generated method stub 
      return false; 
     } 

     @Override 
     public boolean keyTyped(char character) { 
      System.out.println(character); 
      return false; 
     } 

     @Override 
     public boolean touchDown(int screenX, int screenY, int pointer, int button) { 
      return false; 
     } 

     @Override 
     public boolean touchUp(int screenX, int screenY, int pointer, int button) { 
      return false; 
     } 

     @Override 
     public boolean touchDragged(int screenX, int screenY, int pointer) { 
      return false; 
     } 

     @Override 
     public boolean mouseMoved(int screenX, int screenY) { 
      return false; 
     } 

     @Override 
     public boolean scrolled(int amount) { 
      return false; 
     } 

    }); 

nicht gedruckt AAO

+0

Codierung der Zeichenfolge könnte helfen. Verwenden Sie UTF8 – BennX

+1

@BennX Es funktioniert nicht, weil der Schlüssel nicht å, ä oder ö ist. Schlüssel ist nichts, wenn Sie wissen, was ich meine, aber haben Sie eine Idee, warum es auf Windows und nicht auf Os x funktioniert? – thetheodor

+0

Funktioniert beides unter Windows und nicht unter Mac? Können Sie åäö in anderen Anwendungen eingeben, wenn Sie einen Mac verwenden? – Springrbua

Antwort

5

UPDATE

Es scheint, dass dies zu einem Fehler mit Unicode-Zeichen in lwjgl auf OSX zusammenhängt : [FIXED] Unicode input

Wenn Sie aktualisieren bis zur neuesten lwjgl-Bibliothek 2.9.1 sollte dies behoben sein. Aus dem Changelog:

2013-10-13 kappaOne

  • .../org/lwjgl/opengl/MacOSXNativeKeyboard.java, src/native/macosx/org_lwjgl_opengl_Display.m: Fix Tastaturtaste Codes zu Unicode-Zeichen zurückgeben anstelle von ASCII-Zeichen

siehe: 2.9.1-changelog.txt


Original-Antwort

Wie Sie Eingabe von Sonderzeichen in Libgdx bekommen haben?

Sie können die Schnittstelle com.badlogic.gdx.InputProcessor implementieren und den aktuellen Eingangsprozessor gesetzt durch Gdx.input.setInputProcessor(inputProcessor);

Aufruf Dann sollten Sie in der Lage sein, Benachrichtigungen über alle eingegebenen Zeichen zu erhalten (spezielle oder nicht) in der Methode InputProcessor # keyTyped (Zeichen c).

Eigentlich ist dies mehr oder weniger, was die Klasse TextField tut (nicht genau, es lauscht für die Eingabe durch die Erweiterung com.badlogic.gdx.scenes.scene2d.InputListener).

hatte ich einen kurzen Blick auf die entsprechenden Quellcode von Textfeldern keyTyped Methode:

[...] 
if (font.containsCharacter(character)) { 
    // here the character gets added to the text field 
} 
[...] 

So scheint es, dass die Schriftart des Textfeldes das Zeichen unterstützen muss, sonst wird es nicht angezeigt. Ich habe kein Mac, um dies zu testen, aber ich würde vermuten, dass das BitmapFont, das standardmäßig auf Ihrem Mac verwendet wird, die Sonderzeichen nicht unterstützt. Versuchen Sie, ein anderes BitmapFont für das TextField festzulegen (siehe TextField.setStyle (TextFieldStyle-Format)) und prüfen Sie, ob dadurch das Problem behoben wird.

+0

Was passiert während der keyTyped-Methode in Ihrem InputProcessor, wenn Sie åäö eingeben? Wird es nicht einmal aufgerufen oder druckt es falsche Zeichen? – Balder

+0

Gerade meine Antwort bearbeitet: Dies ist wahrscheinlich in lwjgl behoben 2.9.1 – Balder

+0

Danke für alles, habe es noch nicht versucht, aber ich bin mir sicher, dass dies die Antwort ist, danke! – thetheodor