游戏背景
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(1026256)放大2倍后(2052512)
level1_back.png(513240)放大2倍后(1026480)
我们的屏幕大小是:(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); ...... }
如果您迷路了,请参考完整源码: