簡體   English   中英

Java-旋轉的簡單動畫

[英]Java - simple animation of rotation

我是Java的初學者,遇到了一個我尚未找到解決方案的問題。 問題是我有繪制字母和旋轉字母的工作方法-設置旋轉字母時,它會按應有的方式工作。 但是我想使它更具交互性,在學校里,我們已經有了一個基本的框架-我能夠創建一個按鈕,當您單擊它時,字母的角度會發生變化,並且字母會正確重繪。 但是我想將其制作成動畫,例如,您單擊按鈕,並持續10秒鍾(或者直到再次按下按鈕),字母才會旋轉。

在互聯網上,我找到了一種在一段時間后執行操作的方法,並且我認為我會使用它。 我想添加一個角度並重新繪制圖像,比如說1秒鍾,然后重復出現-我認為這會使它看起來像是動畫。 但是我錯了。 我嘗試了很多方法來執行此操作,最好的事情是,在設置了幾秒鍾后,我希望動畫繼續前進,它改變了角度並重新繪制,很遺憾,這是最終狀態,並且沒有在兩者之間繪制狀態創建動畫。 而此最新代碼甚至都沒有做到這一點,該程序只是凍結了。

int animation = 0;
int steps = 0;

public void G_draw() {
        graphic.clear();
        if (animace==1)
        {
            animation();
        }

        letter('a', G_Color.G_cBlack, 2, 2);//drawing an letter
}

public void G_mousePressed(G_Button button, int x, int y) {
    if (button.equals(G_Button.B_LEFT)&&x>700&&x<750&&y>500&&y<520){
            animation=1;
            G_draw();
        }
}

public void animation() {
        long start = System.currentTimeMillis();
        long end = start + 2 * 1000; 
        while (System.currentTimeMillis() < end) {

        }
        langle+=30; // adding an angle
        steps++;

        G_repaint();
        G_draw();
        if (steps<4) animace();
}

代替這個

long start = System.currentTimeMillis();
        long end = start + 2 * 1000; 
        while (System.currentTimeMillis() < end) {

        }

采用
Thread.sleep(# in milliseconds);
我們看不到您在哪里使用langle
if (steps<4) animace(); 僅在animace<>1時運行,否則將跳過,因為animate()調用G_draw()調用animate等。

暫無
暫無

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

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