游戏背景
Background.java
package world;
import sprite.Sprite;
import java.awt.*;
public class Background {
private Sprite _background;
private Sprite _cloud;
public Background(){
_background = new Sprite("res/background/level1.png");
_cloud = new Sprite("res/background/level1_back.png");
_background.translate(-900, 120);
_cloud.translate(0, 120);
_background.scale(2, 2);
_cloud.scale(2, 2);
}
public void update(Graphics2D g){
_cloud.show(g);
_background.show(g);
}
}
level1.png(1026*256)放大2倍后(2052*512) level1_back.png(513*240)放大2倍后(1026*480) 我们的屏幕大小是:(640*480)
DisplayMode(640, 480, 32, 0)
我们先来看一下水平方向(x轴方向)
_background.translate(-900, 120);
level1.png被向左平移了900个像素,还剩下2052-900=1150个像素,大约是640的2倍。
_cloud.translate(0, 120);
level1_back.png被直接放到了x=0的点,还剩下1026像素,大约是640的2倍。 level1.png和level1_back.png覆盖在了一起,构成了最终的背景效果。 将来随着player的向右移动,背景会向左平移,造成一种player向前走的效果。 将来,我们会另外准备2张背景图片,交替反复的贴到屏幕上。 再来看一下垂直方向(y轴方向)
_background.translate(-900, 120);
_cloud.translate(0, 120);
屏幕高度是480,背景图片高度240,我们先移动到偏移120的位置,然后放大2倍,垂直方向上正好填满整个屏幕。
主窗体加载背景
public GameApp(){
try{
background = new Background();
......
}
private void _gameLoop(){
background.update(g);
......
}
如果您迷路了,请参考完整源码:
项目源码
项目源码