我在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问题。
答案 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);
}
}
对象。