最基本的方法是painter's algorithm,只需按照与屏幕距离相反的顺序绘制图层(例如,首先是背景,然后是字符,然后是前景)。
每个层都由一个简单的类表示,例如:
public class Layer
{
List<Sprite> sprites;
public void draw(Graphics g)
{
for (Sprite sprite : sprites)
sprite.draw(g);
}
}
精灵在哪里:
public class Sprite
{
BufferedImage image;
float x, y, w, h;
public void draw(Graphics g)
{
g.drawImage(image, (int)x, (int)y, (int)(x+w), (int)(y+h), 0, 0, image.getWidth(), image.getHeight(), null);
}
}
在这里,背景将是一个具有屏幕大小的单个精灵的图层。您可以对背景层进行子类化以实现视差等效果。
最后,您的图层将成为场景的一部分:
public class Scene
{
List<Layer> layers;
public void draw(Graphics g)
{
for (Layer layer : layers)
layer.draw(g);
}
}
更改渲染顺序就像更改场景中“图层”列表中的顺序一样简单。