Android Game example, Multi Backgrounds scrolling
Android Game example, Multi Backgrounds scrolling
2개의 배경 이미지가 거리에 따라서 서로 다른 스크롤 속도를 가지는 예
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;
BackgroundClouds clouds;
GameKeyPad keyPad;
Airplane airplane;
public GameState() {
background = new Background();
clouds = new BackgroundClouds();
keyPad = new GameKeyPad();
airplane = new Airplane();
}
@Override
public void init() { }
@Override
public void destroy() { }
@Override
public void update() {
background.update();
clouds.update();
airplane.update();
}
@Override
public void render(Canvas canvas) {
background.draw(canvas);
clouds.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);
}
}
Background.java
package game.framework;
import android.graphics.*;
public class Background extends GraphicObject {
int speedX, speedY = 1;
int bitmapHeight;
Paint paint;
public Background(){
super(AppManager.getInstance().getBitmap(R.drawable.field_seamless2));
bitmapHeight = bitmap.getHeight();
}
public Background(Bitmap bitmap) {
super(bitmap);
bitmapHeight = bitmap.getHeight();
}
public void update() {
x+=speedX;
y+=speedY;
}
public void setAlpha(int alpha) {
paint = new Paint();
paint.setAlpha(alpha);
}
public void setScrollSpeed(int speedX, int speedY){
this.speedX = speedX;
this.speedY = speedY;
}
@Override
public void draw(Canvas canvas) {
canvas.drawBitmap(bitmap, 0, y, paint);
canvas.drawBitmap(bitmap, 0, y-bitmapHeight, paint);
if(y>=bitmapHeight)y=y-bitmapHeight;
}
}
BackgroundClouds.java
package game.framework;
public class BackgroundClouds extends Background {
public BackgroundClouds() {
super(AppManager.getInstance().getBitmap(R.drawable.sky_seamless_transparent));
bitmapHeight = bitmap.getHeight();
speedY = 3;
}
}
사용된 구름배경 이미지