2017-05-01 12 views
0

私はHieroで構築されたビットマップフォントを持っています。これはScene2d Labelsで使用しています。LibGDX Label lineHeightを一時的に変更することはできますか?

1つのLabelインスタンスでは、フォントのlineHeight値を小さくする必要がありますが、(同じフォントを使用している)他のラベルはそのままにしておき、フォントのデフォルトのlineHeightを保持する必要があります。

私は単にこのように値を調整しようとしました:

label.getStyle().font.getData().setLineHeight(localReducedValue); 

はしかし、これはどこでも、すべてのラベルを変更した - 振り返ってみると、論理的なようである、私はLabelStyle自体を変更していますので、 。

この時点で、私は2つの解決策を参照して残念ながらlabel.setLineHeight(localReducedValue)のようなものは、存在しません:

  1. を、フォントのコピーを作成し、私は必要な値にそのlineHeightを設定して、別のLabelStyleを作成そのフォントでまたは
  2. setLineHeightを実装する自分用のカスタムラベルを作成します。

最初のアイデアは無駄だと思いますが、2番目のアイデアは少し複雑かもしれません。そのため、ラベルに一時的な高さを実現する簡単な方法があります。

//skin is the skin that you use 

Label myLabel = new Label(text, new LabelStyle(skin.get(LabelStyle.class))); 

をそして、あなたはすべてのラベルに影響を与えずに、スタイルを変更することができます。

答えて

1

ネイサン甘い、LibGDXのコア開発者の一人が親切に完璧に働いているa solutionを、示唆している:

オーバーライドラベル#レイアウト、行の高さを設定し、super.layoutを呼び出して、バックラインの高さを設定します。レイアウトはグリフの位置を計算してキャッシュし、描画するだけで描くので、レイアウトを使用して描画する必要はありません。

0

あなたはこのような何かを行うことによって、単一のLabelLabelStyleを変更することができます。

+0

これは私のために働いていないようです。この新しいLabelStyleのlineHeightを変更すると、元のフォント自体が変更されます。 – Wabbitseason

+0

'label.getStyle()。font.getData()。setLineHeight(localReducedValue);'を使うとします。これにより、基礎となるフォントが変更されてどこでも変更されます。別のフォントを作成し、それを 'LabelStyle'に渡す必要があるので、新しいフォントだけを変更します。 – Andy

+0

別のフォントを作成することが私の最初のアイデアでした。 :) – Wabbitseason

関連する問題