1

我试图通过这样做来使用暂停/恢复按钮暂停动画:

public static int gameStatus = 1;
public int gamePaused = 0;
public int gameRunning = 0;
public void create(){
  gameRunning = 1;
  //.. code
}
public void render(){
   if(gameStatus == gameRunning){ 

//some code .. 

            pause.setClickListener( new ClickListener() {

                @Override
                public void click(Actor actor, float x, float y) {
                    System.out.println("pause is pressed");
                    //to stop the animation at a particular frame
                    spriteBatch.begin();
                    spriteBatch.draw(currentFrame, 100, 100);                        
                    spriteBatch.end();
                    if(gameStatus!=gamePaused)
                    {
                        gameStatus = gamePaused;
                    }
                    else
                    {
                        gameStatus = 1;
                    }

                }
            });
//rest of my render animation code .. 
   }
}

但在桌面上它显示当前帧的 3/4 和下一帧的 1/4。知道为什么吗?而在 android 中,它的行为就像整个图像在颤抖。我想知道可能是因为它一次又一次地调用 render()。我不明白为什么 android 和桌面版本的输出存在差异。他们不应该是一样的吗?我认为两者之间存在一些索引问题。还有其他人遇到过同样的问题吗?任何建议或暂停动画或教程链接的正确方法都会非常有帮助。谢谢你。

4

1 回答 1

2

我在没有任何闪烁问题的情况下完成了暂停实现,就像我通过简单地从 pause 方法中删除 spriteBatch.draw() 并使用布尔变量来知道何时渲染以及何时不渲染以暂停动画一样。我就是这样做的(以防有人遇到同样的问题):

private boolean isPlaying = true;

    @Override
    public void pause() { 
    Gdx.app.log("pause():", "pausing the app");
        if( isPlaying )
        {
            isPlaying = false;
        }
        else
        {
            isPlaying = true;
        }


    }

    @Override
    public void render() {      

    Gdx.app.log("123123", (!seekBar.isDragging())+"");
    if( isPlaying )
              // .. do the animation.. 
    }
于 2012-09-28T04:34:15.033 回答