我试图在libGDX中编写简单的游戏,但这个问题会停止创建该游戏的整个过程。 这是两个类。
public class Question {
private static float getFontX() {
return Assets.font.getBounds(Database.getText()).width / 2;
}
private static float getFontY() {
return Assets.font.getBounds(Database.getText()).height / 2;
}
public static void draw(SpriteBatch batch) {
Assets.font.draw(batch, Database.getText(),
TOFMain.SCREEN_WIDTH / 2 - getFontX(),
getFontY() + 250 + TOFMain.SCREEN_HEIGHT / 2);
//drawing some text from database on screen in the middle of screen;
}
,第二个类是数据库,它包含问题
public class Database {
private static String questions[] = new String[2];
{
questions[0] = "Some question1";
questions[1] = "Some question2";
}
static public String getText() {
return questions[0];
}
}
中存在问题
return questions[0]
因为如果我在那里写例如
return "This will work";
一切都很好。
答案 0 :(得分:1)
您需要将初始化块更改为静态初始化块。
static {
questions[0] = "Some question1";
questions[1] = "Some question2";
}
如果您不创建数据库类的新实例,请执行以下操作:
Database db = new Database();
不会调用动态初始化块。这就是为什么需要使用通过类调用的静态初始化块的原因。
答案 1 :(得分:1)
您可以将Database
类中的数组声明为:
public class Database {
private static String questions[] = new String[]{
"Some question1", "Some question2"
};
static public String getText() {
return questions[0];
}
}
然后它返回你想要的String
。