Java 在BasicGameState中未调用Render
我正在用java开始一个非常简单的游戏,但我已经停留在第一步了。我创建了一个StateBasedGame类(Kreations),它成功地添加、输入并初始化了我的BasicGameState(MenuGameState)。然而,MenuGameState的update()和render()方法没有被调用——我很难找出原因。你能帮忙吗? 代码如下: StateBasedName:Java 在BasicGameState中未调用Render,java,Java,我正在用java开始一个非常简单的游戏,但我已经停留在第一步了。我创建了一个StateBasedGame类(Kreations),它成功地添加、输入并初始化了我的BasicGameState(MenuGameState)。然而,MenuGameState的update()和render()方法没有被调用——我很难找出原因。你能帮忙吗? 代码如下: StateBasedName: import gamestates.MenuGameState; import org.newdawn.slick.
import gamestates.MenuGameState;
import org.newdawn.slick.*;
import org.newdawn.slick.state.StateBasedGame;
public class Kreations extends StateBasedGame
{
public Kreations() {
super("Kreations");
}
@Override
public void update(GameContainer gc, int delta) throws SlickException
{
}
@Override
public void render(GameContainer gc, Graphics g) throws SlickException
{
}
public static void main(String[] args) throws SlickException
{
try {
AppGameContainer container = new AppGameContainer(new Kreations());
container.setDisplayMode(800,600,false);
//Make sure the logic updates consistently
container.setMinimumLogicUpdateInterval(20);
container.setMaximumLogicUpdateInterval(20);
container.start();
} catch (SlickException e) {
e.printStackTrace();
}
}
@Override
public void initStatesList(GameContainer gc) throws SlickException {
this.addState(new MenuGameState());
}
}
基本状态:
package gamestates;
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.SlickException;
import org.newdawn.slick.state.BasicGameState;
import org.newdawn.slick.state.StateBasedGame;
public class MenuGameState extends BasicGameState {
public static final int ID = GameStates.MAIN_MENU.ordinal();
@Override
public void init(GameContainer gc, StateBasedGame sbg)
throws SlickException {
}
@Override
public void render(GameContainer gc, StateBasedGame sbg, Graphics g)
throws SlickException {
g.drawString("Hello World", 100, 100);
}
@Override
public void update(GameContainer gc, StateBasedGame sbg, int delta)
throws SlickException {
}
@Override
final public int getID() {
// TODO Auto-generated method stub
return GameStates.MAIN_MENU.ordinal();
}
public void enter(GameContainer container, StateBasedGame game) throws SlickException {
System.out.print("MenuGameState.enter() is called");
}
}
除非其他地方有代码应该调用这些方法,否则不会调用MenuGameState的update()和render()方法,因为没有对它们的调用。我还没有找到
StateBasedGame
类的javadoc,但我猜当前状态是由StateBaseGame的render()方法呈现的。由于您重写了该方法使其不起任何作用,因此任何对象都不会调用状态的render()方法。尝试删除主类中重写的render()
和update()
方法
顺便说一句,在我找到的源文件中,这两个方法是最终的,所以不可能重写它们,这可能表明这些方法不应该被重写