Java-简单的旋转动画

时间:2018-12-12 20:14:51

标签: java animation graphics

我是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();
}

1 个答案:

答案 0 :(得分:0)

代替此

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等。