如何使用自定义绘制类在Java slick中绘制对象

时间:2013-02-04 22:23:11

标签: java draw renderer

我在2d创建了一个非常简单的Java Slick游戏。我可以在扩展BasicGameState的类中使用renderer方法,但我想使用DarwMap类渲染到我的游戏容器中。

这是我的游戏源代码和不工作的DrawMap类:

public class GamePlay extends BasicGameState{

    DrawMap map;

    public GamePlay(int state){

    }

    @Override
    public void init(GameContainer arg0, StateBasedGame arg1) throws SlickException {
        // TODO Auto-generated method stub      
    }

    @Override
    public void render(GameContainer gc, StateBasedGame sbg, Graphics g) throws SlickException {
        map.render();
    }

    @Override
    public void update(GameContainer arg0, StateBasedGame arg1, int arg2) throws SlickException {
        // TODO Auto-generated method stub

    }

    @Override
    public int getID() {
        // TODO Auto-generated method stub
        return 1;
    }
}

和下一堂课

public class DrawMap {

    //size of the map
    int x,y;
    //size of the tile
    int size;

    //tile
    Image tile;

    //creator
    public DrawMap(GameContainer gc, int x, int y, int size){
         this.x = x;
         this.y = y;
         this.size = size;
    }

    public void render() throws SlickException{

         tile = new Image("res/Tile.png");

         for(int i=0; i<(y/size); i++){
             for(int j=0; j < (x/size); j++){
                 tile.draw(j*size, i*size, 2);
            }
         }
    }

}

我知道这是错的,但是如果有人可以帮我搞清楚并用DrawMap类来解决我的drawind问题。

1 个答案:

答案 0 :(得分:1)

我在构造函数中没有看到它,但我假设您在那里创建了map实例。

现在,要绘制到屏幕上(这通常对Slick和Java2D有效),您需要一个Graphics对象,它代表一个图形上下文,它是设置将数据放入的对象。屏幕。对于Slick2D,您可以通过调用GameContainer方法从getGraphics获取图形。然后,您可以将图像绘制到屏幕上,在刚刚获得的drawImage对象上调用Graphics方法。

这是一个示例,将图形上下文作为DrawMap的{​​{1}}方法的参数传递:

render

public class GamePlay extends BasicGameState{ DrawMap map; ... @Override public void render(GameContainer gc, StateBasedGame sbg, Graphics g) throws SlickException { map.render(gc.getGraphics()); } ... } 班......

DrawMap

当然,您可以直接进入public class DrawMap { Image tile; ... public void render(Graphics g) throws SlickException { // your logic to draw in the image goes here // then we draw the image. The second and third parameter // arte the coordinates where to draw the image g.drawImage(this.tile, 0, 0); } } 对象。