Я хочу реализовать фон прокрутки в моей игре в android studio.
Моя идея состояла в том, чтобы иметь два растровых изображения, которые нарисованы рядом друг с другом, и сбросить положение растрового изображения, если оно больше не является экраном
- Фон перемещается вправо
- экран мигает
Как я могу решить свои проблемы?
мой SurfaceView
класс
public class GameView extends SurfaceView implements Runnable {
private Thread thread; // draw + update thread
int screenx, screeny; // screen size
Background background1 , background2;
float screenratiox, screenratioy;
private boolean isplaying;
Paint paint;
public GameView(Context context, int screenx, int screeny) {
super(context);
this.screenx = screenx;
this.screeny = screeny;
this.screenratiox = 1920f / screenx;
this.screenratioy = 1080f / screeny;
background1 = new Background(screenx, screeny, getResources());
background2 = new Background(screenx, screeny, getResources());
background2.x = screenx;
paint = new Paint();
}
@Override
public void run() {
while (isplaying) {
update();
sleep();
draw();
}
}
public void sleep() {
try {
Thread.sleep(17);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public void resume() {
isplaying = true ;
thread = new Thread(this) ;
thread.start();
}
public void pause() {
try {
isplaying = false ;
thread.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
private void update() { //should move the background and reset it, if beyond the screen
background1.x += 10 * screenratiox; // move
background2.x += 10 * screenratioy; // move
if (background1.x + background1.background.getWidth() < 0) {
background1.x = screenx; //reset x
}
if (background2.x + background2.background.getWidth() < 0) {
background2.x = screenx; //reset x
}
}
private void draw () {
if (getHolder().getSurface().isValid()) {
Canvas canvas = getHolder().lockCanvas();
canvas.drawBitmap(background1.background, background1.x, background1.y, paint);
canvas.drawBitmap(background2.background, background2.x, background2.y, paint);
getHolder().unlockCanvasAndPost(canvas);
}
}
}
мой фоновый класс
public class Background {
int x = 0, y = 0; // position
Bitmap background; // image
Background(int screenx , int screeny , Resources res) {
background = BitmapFactory.decodeResource(res, R.drawable.background);
background = Bitmap.createScaledBitmap(background, screenx, screeny, false);
}
}