可能遗漏了一些基本的东西,但我的程序中有一个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)
答案 0 :(得分:2)
我想我的评论提供了答案,所以我会发帖给别人帮忙。
正确的调用是将偏移量放在函数的 y 参数中:
f.drawString(7, (i * 16)+5, lines[i]);
由于函数定义是:
public void drawString(float x, float y, String whatchars)
答案 1 :(得分:0)
我认为您需要更改y
坐标而不是x
,如下所示:
for(int i = 0; i < lines.length; i++) {
if(lines[i] != null) {
f.drawString(7, (i * 16) +5, lines[i]);
}
}
这将打印来自x = 7
和y varying from 5 to 20
的行。