我的字体类:
fonts.init()
然后,我在渲染类中调用g2d.setFont(myFont)
,g2d.drawString("test")
,然后调用irb(main):009:0> (1..100).to_a.select{ |e| ((e >> 3) & 1) == 1 }
=> [8, 9, 10, 11, 12, 13, 14, 15, 24, 25, 26, 27, 28, 29, 30, 31, 40, 41, 42, 43, 44, 45, 46, 47, 56, 57, 58, 59, 60, 61, 62, 63,
72, 73, 74, 75, 76, 77, 78, 79, 88, 89, 90, 91, 92, 93, 94, 95
。
我没有错误,我也没有收到异常消息。但是,屏幕上显示的字体是我的后备衬线字体,而不是我的自定义字体。为什么会这样?
编辑2:这实际上修复了它,我的渲染类中还有另一个愚蠢的错误。感谢。
答案 0 :(得分:2)
它的java约定只使用常量事物的全部大写(即img
或枚举)。也就是说,您正在使用同名的局部变量在final
方法中隐藏MYFONT
。{/ p>
作为一个更简单的例子:
init()
您对public int i = 0;
public void update() {
int i = 10; // this does not in any way touch the above-declared "i"
}
public void updateProperly() {
i = 10; // this _does_ use the above-declared "i"
}
变量做同样的事情。
构建代码的更好方法是改为:
MYFONT