libgdx文本字段中的特殊字符不起作用
我可以使用setText(“åäö”),但如果我在键盘上输入它就不显示,这也不起作用
public void keyTyped(TextField textField, char key) { JOptionPane.showMessageDialog(new JFrame(), key); }
奇怪的是,它在Mac上不起作用,但它在Windows上有效,是否有人有答案? 谢谢!
这是另一个类似主题的问题!
你如何从Libgdx中的特殊字符获得输入?
我试图获得ascii值并通过它
Gdx.input.isKeyPressed(ascii value);
但它不起作用。 我已将项目编码设置为UTF-8,我可以打印像åäö这样的特殊字符。
编辑:我试过这个
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; } });
没有打印åäö
UPDATE
看来,这与OSX上的lwjgl中的unicode字符错误有关: [FIXED] Unicode输入
如果您更新到最新的lwjgl库2.9.1,则应该修复此问题。 来自更改日志:
2013-10-13 kappaOne
- … / org / lwjgl / opengl / MacOSXNativeKeyboard.java,src / native / macosx / org_lwjgl_opengl_Display.m:修复键盘键代码以返回Unicode字符而不是ASCII字符
见: 2.9.1-changelog.txt
原始答案
你如何从Libgdx中的特殊字符获得输入?
您可以通过调用Gdx.input.setInputProcessor(inputProcessor );
来实现接口com.badlogic.gdx.InputProcessor并设置当前输入处理器Gdx.input.setInputProcessor(inputProcessor );
然后,您应该能够在方法InputProcessor#keyTyped(char c)中接收有关所有类型字符(特殊字符或非特殊字符)的通知。
实际上这或多或少是TextField类所做的(不完全是,它通过扩展com.badlogic.gdx.scenes.scene2d.InputListener来监听输入)。
我快速浏览了TextFields keyTyped方法的相关源代码:
[...] if (font.containsCharacter(character)) { // here the character gets added to the text field } [...]
看来,文本字段的字体必须支持该字符,否则将不会显示。 我没有测试它的mac,但我猜,Mac上默认使用的BitmapFont不支持特殊字符。 尝试为TextField设置不同的BitmapFont(请参阅TextField.setStyle(TextFieldStyle样式)),看看这是否解决了问题。