java - 如何让一个球在java中连续左右移动?
Posted
技术标签:
【中文标题】java - 如何让一个球在java中连续左右移动?【英文标题】:How can I make a ball move left and right continuously in java? 【发布时间】:2016-03-15 10:48:31 【问题描述】:假设下面的方法连接到一个在窗口中创建一个圆圈的 main 方法,并且我希望这个圆圈向左移动大约 100 像素,然后向右移动 100 像素,依此类推。
我想不出代码来做到这一点。
private void moveBall()
boolean moveRight = true;
if(moveRight == true)
x = x + 1;
else
x = x - 1;
if(x == 300)
moveRight = false;
【问题讨论】:
您有什么问题?它目前在做什么?附:您应该将moveRight
变量放在方法范围之外,以便您的 moveRight = false;
实际工作。当 x = left bounds 时,您还需要将其设置回 true
目前,球在初始化时向右移动,继续向右移动,并且向右移动太多以至于它从屏幕上消失了,再也没有回来
在我的脑海中,我认为应该发生的是 x 的值达到 300,然后满足 if 语句的 else 部分,然后由于 x = x -1 应该开始向左移动球,但这并没有发生
【参考方案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;
【讨论】:
你介意告诉我是什么吗?和:在 moveBall() 方法中做什么? 那个? : 语法称为三元运算符alvinalexander.com/java/edu/pj/pj010018 @J.Brown 它被称为ternary 就像if-else
意思是如果?
之前的条件为真设置为x + 1,如果为假则设置为'x - 1'
您的问题在于变量范围。阅读它:)它会帮助你呵呵以上是关于java - 如何让一个球在java中连续左右移动?的主要内容,如果未能解决你的问题,请参考以下文章