摇摆动画暂停和恢复

Posted

技术标签:

【中文标题】摇摆动画暂停和恢复【英文标题】:Swing animation pause and resume 【发布时间】:2014-06-14 23:44:02 【问题描述】:

我想增加暂停/恢复游戏的可能性。不幸的是,我的解决方案只暂停了游戏,但没有恢复它(当我单击恢复按钮时没有任何反应 - 图像仍然存在)。我还尝试在thread 上调用等待/通知方法,但它也不起作用 - 我得到了Exception in thread "AWT-EventQueue-0" java.lang.IllegalMonitorStateException。暂停/恢复的最佳解决方案是什么?

游戏循环

public void run() 
    init();

    long startTime;
    long reTime;
    long waitTime;

    while (running) 
        startTime = System.nanoTime();
        int CarPosX = car.zwrocPolozenieX();
        int CarPosY = car.zwrocPolozenieY();
        update(b, CarPosX, CarPosY);
        render(b);
        //draw();
        repaint();


        if(b<4390) 
            b=b+szybkoscMapy;
        

        reTime = System.nanoTime() - startTime;
        waitTime = targetTime - reTime/100000000;
        try 
            Thread.sleep(waitTime);
        
        catch(Exception e) 

        
    


public void init() 
    if(thread == null) 
        thread = new Thread(this);
        thread.start();
    
    b=0;
    running = true;
    image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
    g = (Graphics2D) image.getGraphics();


    map = new Map(levelNumber);
    car = new Car(map);
    car.setxpos(338);
    car.setypos(150);


听众

    pause_button.addActionListener( new ActionListener()
    
        public void actionPerformed(ActionEvent e)
        
            bp.running = false;
        
    );

resume_button.addActionListener( new ActionListener()
    
        public void actionPerformed(ActionEvent e)
        
            bp.running = true;
        
    );

【问题讨论】:

【参考方案1】:

使用javax.swing.Timer 调整动画速度。调用计时器的start()stop() 方法的典型控件被检查here。这个fleet simulation,它使用了这样一个Timer,如果有兴趣也可以。

【讨论】:

以上是关于摇摆动画暂停和恢复的主要内容,如果未能解决你的问题,请参考以下文章

暂停和恢复 AnimateWithDuration 动画 ios

当应用程序进入后台时暂停和恢复 UIView 动画

暂停动画旋转,设置角度值,然后稍后恢复?

如何暂停和恢复动画?

无论我是在主时间轴动画还是子/孙 MC 动画上暂停,如何从最后一个位置恢复动画?

jQuery 暂停/恢复动画