1

Effect.shadow()はPlayN1.3で非推奨になっているので、以前は次のようなものがありました。

TextFormat textFormat = new TextFormat(myFont, textWidth, Alignment.LEFT, colorCode, Effect.shadow(-16777216, shadowX, shadowY));

だから私はこれに変更しました:

TextFormat textFormat = new TextFormat();
textFormat.withFont(myFont);
textFormat.withWrapping(textWidth, Alignment.LEFT);

今はシャドウが必要ありません。問題ありませんが、以前のような結果は得られませんでした。しばらくお待ちください。今は考えないでください。次に、このコードを次のように変更しました。

TextFormat textFormat = new TextFormat().withFont(myFont).withWrapping(textWidth, Alignment.LEFT);

今は気にしないシャドウを除いて、以前と同じ結果が得られます。間違っていない場合、これは上記のコードを1行で表したものです。では、なぜそれが機能し、上記のコードは機能しなかったのですか?概念的な違いはありますか?どなたでもご説明いただけます!

//注:変数(textWidth、myFont)について心配する必要はありません。これらはこれとは何の関係もありません。

4

1 に答える 1

1

TextFormat オブジェクトは不変です。上記のコードが破棄している新しいTextFormat インスタンスを返す textFormat.withFont(myFont) を呼び出すと。最初のコードを機能させたい場合は、次のように記述する必要があります。

TextFormat format = new TextFormat();
format = format.withFont(myFont);
format = format.withWrapping(textWidth, Alignment.LEFT);
于 2012-05-26T03:56:02.713 に答える