2

私はTextFieldを試していますが、フォントを反転するときに問題が発生します。私の正投影カメラはyDown=trueに設定されています。その設定で、テキストが反転されるので、BitmapFontの反転コンストラクターパラメーターをtrueに設定するソリューションを思いつきました。しかし、私が以下のコードを試してみると。「HelloWorld」というテキストは、9つのパッチの境界線の外側にレンダリングされています。これがそのスクリーンショットです:

スクリーンショット

    TextFieldStyle tfs = new TextFieldStyle();
    NinePatch np = new NinePatch(new Texture(Gdx.files.internal(ResourceConstants.IMAGE_NINEPATCH)), 8, 8, 8, 8);

    tfs.font = new BitmapFont(true);
    tfs.fontColor = Color.BLACK;
    tfs.background = np;

    TextField tf = new TextField("Hello World", tfs);
    tf.x = 50;
    tf.y = 90;
    tf.width = 100;
    tf.height = 32;
    addActor(tf);
    tf.pack();
4

2 に答える 2

0

私も同じ効果でした。を追加TextFieldし、たとえば、CheckBoxこのウィジェット セット setScale に対して と を追加すると、この効果が見られます。

TextField textfield = new TextField("Text field",skin);
stage.addActor(textfield);

CheckBoxStyle checkBoxStyle = skin.get(CheckBoxStyle.class);
checkBoxStyle.font.getData().setScale(2f);

CheckBox checkbox = new CheckBox("CheckBox", checkBoxStyle);
stage.addActor(checkbox);
于 2016-07-15T07:33:07.563 に答える
0

問題は、draw が tfs (座標が設定される場所) で呼び出されるメソッドにあります。フォントのデカルト y 座標は、他の GDX オブジェクトとは逆になっています。

だから電話したら

myFont.draw(spriteBatch, "Hello World", 0, 0);

次に、メッセージが左下側に正しく描画されることを期待します。しかし、これは間違っています!フォント自体は左上から描画されるため、メッセージは画面の左下隅、下端の下に描画されます。メッセージを見ることさえできません。

しかし、座標を変更すると:

myfont.draw(spriteBatch, "box2d x: " + String.format("%2.2f", x), 10, 20);

負の y 方向に表示するのに十分なスペースを与えたので、メッセージが表示されます。

不適切な動作をしているフォントが Y 方向で不適切な動作をしており、期待する場所よりもにレンダリングされていることを考えると、上記の誤解が実際に問題であると思われます。

ビットマップフォント自体の描画座標を制御しておらず、これが TextField クラスによってのみ処理され、テキスト フィールドのサイズに関係なくフォントが常に範囲外である場合、バグが疑われます。 GDXで。それについてフォーラムに質問してみてください。

于 2013-07-15T08:02:11.873 に答える