簡體   English   中英

BlueJ中的Java-一旦對象經過特定距離,如何停止動畫運行?

[英]Java in BlueJ - how to stop an animation running once an object has traveled a specific distance?

我被要求在BlueJ中創建一個程序,該程序可以對指定數量的隨機大小的球進行動畫處理,並成功地將其彈起。我只是無法弄清楚如何做最后一部分來停止動畫在最后一個球離開屏幕之后(不遲不早)。 這是我到目前為止的內容:

// make them bounce
    boolean finished =  false;
    while(!finished) {
        myCanvas.wait(100);           // small delay
        for(BouncingBall ball : balls) {
            ball.move();
        // stop once ball has travelled a certain distance on x axis
        if((ball.getXPosition() >= 550 + 32*numberOfBalls) ) {
            finished = true;
        }

if((ball.getXPosition() >= 550 + 32*numberOfBalls) )

是由書提供的,我無法弄清楚32的來源可能無濟於事-在代碼中的其他地方似乎都沒有提到它。

我嘗試了其他事情,例如:

if((ball.getXPosition() >= 550 + 32*numberOfBalls) && (ball.getXPosition() <= (550 + ball.getDiameter()) )

但是在最后一個球離開屏幕后,它仍然會停止動畫一會兒。

任何建議將不勝感激,我只是不知所措。 非常感謝。

動畫的圖像正在運行,我希望得到它,以便所有粉紅色的球都離開屏幕后它就停止運行。

你試一試

if (ball.getXPosition() >= 550) {

}

與當前情況一樣,假設有10個球,則只有這些球是550 + 32 * numberOfBalls(意味着32 * 10 + 550 = 870)。 可能永遠不會發生...

或添加完整的代碼,而不僅僅是片段,現在還不清楚。

我對if((ball.getXPosition()> = 550 + 32 * numberOfBalls))進行了一些搜索,結果發現這些球是否均勻分布。 因此,這將是有意義的。 否則,您必須單獨使用if(ball.getXPosition()> = 550)來檢查是否所有球都在屏幕之外

另外,正如您提到的,您必須將球的直徑添加到條件中。 因此:

if((ball.getXPosition() + ball.getDiameter()) >= 550) { }

參考:

http://lists.bluej.org/pipermail/bluej-discuss/2006-March/005457.html

http://www.javaprogrammingforums.com/whats-wrong-my-code/33178-need-randomly-change-size-programs-balls.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM