Java:具有相同速度的两个背景相互重叠

2019年5月14日 7点热度 0条评论

这是我的第一个问题,我将尝试使其尽可能清楚。如果有人之前问过类似的问题,请原谅我(我检查但一无所获)。

我正在尝试用Java创建我的第一个android应用程序。这是一款小游戏,屏幕左侧有一个角色(横向模式),背景从右向左延伸,给人以动感的印象。本底的速度应保持恒定。
我使用了一个如下的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;
    }
}

我希望很清楚,希望有人能够帮助我。

解决方案如下:

编辑:我实际上通过给background2一个相对于background1的位置的x位置来解决它

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();
    }

我仍然有兴趣了解为什么以前会发生这种情况。谢谢你们