Java: два фона с одинаковой скоростью накладываются друг на друга - PullRequest
0 голосов
/ 05 февраля 2020

Это мой первый вопрос, и я постараюсь сделать его максимально понятным. Пожалуйста, прости меня, если кто-то задавал подобный вопрос раньше (я проверял, но ничего не нашел).

Я пытаюсь создать свое первое android приложение в java. Это небольшая игра с персонажем в левой части экрана (ландшафтный режим) и фоном, который идет справа налево, создавая впечатление движения. Скорость фона должна быть постоянной. Я использовал класс Background, который выглядит следующим образом:

public class Background {

    int x=0, y=0;
    Bitmap background;

    Background(int screenX, int screenY, Resources res){

        background = BitmapFactory.decodeResource(res, R.drawable.background);
        background = Bitmap.createScaledBitmap(background, screenX, screenY, false);
    }
}

, затем в классе GameView я создаю 2 фоновых объекта

private Background background1, background2;

и в конструкторе:

background1 = new Background(screenX, screenY, getResources());
background2 = new Background(screenX, screenY, getResources());

//both backgrounds are the same picture

background2.x = screenX;

paint= new Paint();

наконец-то:

private void update(){
    background1.x -=2 * screenRatioX;
    background2.x -=2 * screenRatioX;
    //both have the same speed

    if (background1.x + background1.background.getWidth()<0){
        background1.x = screenX;
        // to make it reappear on the right side when it vanishes on the left side
    }
    if (background2.x + background2.background.getWidth()<0){
        background2.x = screenX;
    }
}

Надеюсь, это понятно и кто-то сможет мне помочь.

1 Ответ

0 голосов
/ 05 февраля 2020

Редактировать: на самом деле я решил эту проблему, задав положение фона топора background2 относительно положения фона background1

private void update(){
background1.x =(int)(background1.x - (2 * screenRatioX));
if(background1.x < background2.x) {
        background2.x = background1.x + background1.background.getWidth();}
        //(int)(background2.x - (2 * screenRatioX));
else {background2.x =background1.x-background1.background.getWidth();




    }

if (background1.x + background1.background.getWidth()<0){
    background1.x = background2.x + background2.background.getWidth();

}
if (background2.x + background2.background.getWidth()<0){
    background2.x = background1.x+background1.background.getWidth();
    }

Мне все еще интересно понять, почему это произошло раньше. Спасибо всем

...