所以我有这个课程:
public class Font extends BitmapFont
{
FreeTypeFontGenerator generator;
FreeTypeFontGenerator.FreeTypeFontParameter parameter;
public Font()
{
generator = new FreeTypeFontGenerator();
parameter = new FreeTypeFontGenerator.FreeTypeFontParameter();
parameter.size = 30;
parameter.color = Color.WHITE;
this = generator.generateFont(parameter);
generator.dispose();
}
}
但是就这一行:
this = generator.generateFont(parameter);
我收到错误,它说: required Font, found BitmapFont.
现在我不明白为什么编译器没有把我的Font类看作BitmapFont。你们知道原因,还知道我怎样才能将字体分配给班级本身?
答案 0 :(得分:3)
无论Raeffaele在评论中描述的错误如何,你都不了解OO的基本内容。
采用这个简单的 is-a 示例:牛是动物。但是动物并不总是牛。它也可以是绵羊或狗。众所周知,狗和牛完全不同,即使它们都继承自动物。
现在我们将此应用于您的情况。字体是一个BitmapFont,但BitmapFont并不总是一个字体。
鉴于此,
generator.generateFont(parameter);
调用返回一个LibGDX BitmapFont实例,而不是您自己的Font类的实例。因此,尝试将其分配给需要Font实例的变量将是一个非常糟糕的主意。
缩短版本。
你应该明白这是有效的,因为Font是一个BitmapFont:
BitmapFont font = new Font();
这不是因为BitmapFont不是Font:
Font font = new BitmapFont();
您的代码正试图以稍微不同的方式创建第二种情况。