如何让一个矩形向上移动到一个点然后再向下移动?(这一遍又一遍)

时间:2015-01-25 18:27:36

标签: java animation

您好这是我的代码,但我无法弄清楚如何让矩形向上移动然后向下移动! 你能帮帮我吗? 我的矩形类:

public class Block {
private int size;
public int xpos;
public int ypos;
boolean up = true;
public Block(){
    size = 40;
}

public void drawBlock(Graphics g){
    g.fillRect(xpos, ypos, size, size);

}
public void setStartScrLocation(){
    xpos = 130;
    ypos = 200;
}
public void startAnimationUp(){
    ypos = (int) ((int)ypos - 0.0001);
}
public void startAnimationDown(){
    ypos = (int) ((int)ypos + 0.0001);
}
}

这是我的“开始课程”:

public class startScreen {
Block startBlock = new Block();
public startScreen(){
     startBlock.setStartScrLocation();
}
public void displayThings(Graphics g){

    startBlock.drawBlock(g);
    if(startBlock.up == true){
        startBlock.startAnimationUp();
    }
    else if(startBlock.ypos > 280){
        startBlock.up = false;
    }
    else if(startBlock.up == false){
        startBlock.startAnimationDown();
    }
    else if(startBlock.ypos < 200){
        startBlock.up = true;
    }
}

} 矩形向上移动然后停在我的框架顶部(如果你想知道我没有发布框架类)我的框架宽度为300,高度为500 我的框架类中有一个paintComponent函数,它绘制了这个函数displayThings

1 个答案:

答案 0 :(得分:1)

你有几个问题。首先,您从up == true开始,这会导致ypos在每次迭代时减少。由于ypos200开始,它永远不会到达280,因此永远不会出现将up设置为false的条件。所以它将无限期地持续下降。

其次,在你的方法中增加ypos,你将它增加0.0001,然后将其四舍五入到下面最接近的整数,这没有效果,所以ypos永远不会即使up变为假,也会增加。