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版とデスクトップ版で出力に違いがある理由がわかりません。それらは同じであるべきではありませんか?2つの間にインデックス作成の問題があると思います。他に同じ問題を経験した体はありますか?アニメーションやチュートリアルのリンクを一時停止するための提案や適切な方法は本当に役に立ちます. ありがとうございました。

4

1 に答える 1

2

一時停止メソッドから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 に答える