おそらく基本的なものが欠けていますが、プログラムにforループがあり、配列(lines[]
)を反復処理して画面上に描画することになっています(LWJGL / Slickを使用)。
線が別々の線(で(i*16 + 7, 5)
)に表示される代わりに、それらはすべて。に表示され(7, 5)
ます。
for(int i = 0; i < lines.length; i++) {
if(lines[i] != null) {
f.drawString((i * 16) + 7, 5, lines[i]);
}
}
呼び出された関数が値を使用する前に値が変更されないように、ループ内の最終変数を定義することを提案する他の質問に対する回答を見てきました。だから私はコードを次のように変更しました:
for(int i = 0; i < lines.length; i++) {
if(lines[i] != null) {
final int i2 = i;
f.drawString((i2 * 16) + 7, 5, lines[i]);
}
}
しかし、それは修正されません(私はiの最後の値に固執しておらず、Slickはiの値を保存するべきではないので、実際にはそれを期待していませんでしたが、確認しようとしました)。
drawStringのヘッダーは次のとおりです。
public void drawString(float x, float y, String whatchars)