Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在BasicGameState中未调用Render_Java - Fatal编程技术网

Java 在BasicGameState中未调用Render

Java 在BasicGameState中未调用Render,java,Java,我正在用java开始一个非常简单的游戏,但我已经停留在第一步了。我创建了一个StateBasedGame类(Kreations),它成功地添加、输入并初始化了我的BasicGameState(MenuGameState)。然而,MenuGameState的update()和render()方法没有被调用——我很难找出原因。你能帮忙吗? 代码如下: StateBasedName: import gamestates.MenuGameState; import org.newdawn.slick.

我正在用java开始一个非常简单的游戏,但我已经停留在第一步了。我创建了一个StateBasedGame类(Kreations),它成功地添加、输入并初始化了我的BasicGameState(MenuGameState)。然而,MenuGameState的update()和render()方法没有被调用——我很难找出原因。你能帮忙吗? 代码如下:

StateBasedName:

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()
方法

顺便说一句,在我找到的源文件中,这两个方法是最终的,所以不可能重写它们,这可能表明这些方法不应该被重写