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中连续左右移动?的主要内容,如果未能解决你的问题,请参考以下文章

球在不可见的盒子内弹跳/移动 ios/xcode

在网格 xcode 中移动球

JAVA版2048

Java 嵌入 HTML

C++ 让一个球在一个平面中滚动

如何让DIV随着左右滚动条移动,上下滚动条不变