게임에서 자주 사용되는 상하 무한 스크롤링 방법의 한 예
package game.framework; import android.graphics.*; public class Background extends GraphicObject { int speedX, speedY = 1; int bitmapHeight; public Background(){ super(AppManager.getInstance().getBitmap(R.drawable.field_seamless2)); bitmapHeight = bitmap.getHeight(); } public Background(Bitmap bitmap) { super(bitmap); } public void update() { x+=speedX; y+=speedY; } public void setScrollSpeed(int speedX, int speedY){ this.speedX = speedX; this.speedY = speedY; } @Override public void draw(Canvas canvas) { canvas.drawBitmap(bitmap, 0, y, null); canvas.drawBitmap(bitmap, 0, y-bitmapHeight, null); if(y>bitmapHeight) y -= bitmapHeight;
} }
GameState.java
package game.framework;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.util.Log;
import android.view.KeyEvent;
import android.view.MotionEvent;
public class GameState implements IState {
Background background;
GameKeyPad keyPad;
Airplane airplane;
public GameState() {
background = new Background();
keyPad = new GameKeyPad();
airplane = new Airplane();
}
@Override
public void init() { }
@Override
public void destroy() { }
@Override
public void update() {
background.update();
airplane.update();
}
@Override
public void render(Canvas canvas) {
background.draw(canvas);
airplane.draw(canvas);
keyPad.draw(canvas);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
return false;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return keyPad.onTouchEvent(event);
}
}
배경으로 사용된 이미지