본문 바로가기

카테고리 없음

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;

}

}

사용된 구름배경 이미지