2014-04-15 49 views
0

嗨我有一個在Libgdx spritebatch動畫。它只播放一次,當它完成後,我想停止繪製它,所以它不會出現在屏幕上。我有一個布爾值,檢查它是否仍然存在,即動畫,當動畫使用isAnimationFinished結束時它被設置爲false,但它仍然保留在屏幕上,我不知道爲什麼即使日誌打印顯示它在完成時更改爲false 。有沒有人有任何想法,爲什麼這是?謝謝你的幫助。以下代碼來自我的渲染方法。如何停止在libgdx中繪製SpriteBatch動畫?

Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT); // This cryptic line clears the screen. 
    boolean alive = true; 
    stateTime += Gdx.graphics.getDeltaTime();   // #15 
     currentFrame = walkAnimation.getKeyFrame(stateTime, false); // #16 
     spriteBatch.begin(); 
     spriteBatch.draw(menu, 0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); 
     if (alive) 
     spriteBatch.draw(currentFrame,50,50); 
     if(walkAnimation.isAnimationFinished(stateTime)) 
     alive = false; 
     System.out.println(alive); 
     spriteBatch.end(); 
     stage.draw(); 

回答

2

我看到的問題是,你總是之初宣佈一個新的布爾變量「活着」,並設置活着真:

boolean alive = true; 

,然後所有的圖紙正在發生, 你,如果你的動畫完成設置活着虛假所有:

if(walkAnimation.isAnimationFinished(stateTime)) 
    alive = false; 

==>ŧ帽子太晚了,因爲在這之後,你不會再用這個本地變量做任何事情。


例如,您可以檢查是否「活着」應該在一開始是真的還是假的權利,並相應設置的值,例如像:

boolean alive = true; 
if(walkAnimation.isAnimationFinished(stateTime)) { 
    alive = false; 
} 
//your drawing code below.. 

或者你可以把「活着」一字段而不是局部變量。

+1

非常感謝您指出。這是我犯的一個愚蠢的錯誤。我做了我的布爾變量全局,而現在它工作正常。 – user2002077