假设下面的方法连接到一个在窗口中创建圆的主方法,并且我希望这个圆向左移动大约100个像素,然后向右移动100个像素,依此类推。
我无法弄清楚要执行此操作的代码。
private void moveBall()
{
boolean moveRight = true;
if(moveRight == true)
{
x = x + 1;
}
else
{
x = x - 1;
}
if(x == 300)
{
moveRight = false;
}
}
答案 0 :(得分:1)
球持续向右移动的原因是因为当它击中if语句以将moveRight设置为false时,它会在方法开始时将其重置为true。如果你想让它像你认为的那样工作,你需要将moveRight
拉成一个类变量。
怎么样这样试试呢?
//set the moveRight variable as a class variable
private boolean moveRight = true;
private void moveBall() {
//move right or left accordingly
x = moveRight ? x + 1 : x - 1;
//if x == 300 we want to move left, else if x == 100 im assuming you want to move right again
if (x == 300) {
moveRight = false;
} else if(x == 100){
moveRight = true;
}
}