2011-08-01 36 views
0

我正在使用sprite和Animated sprite。我用16幀的動畫精靈。左,右,上,下和最後4幀爆炸動畫。Thread.sleep動畫(Andengine)

//animSprite.setCurrentTileIndex(leftCount); 

當動畫雪碧與精靈碰撞..我想顯示最後4幀5秒。如何使用andengine。我嘗試了Thread.sleep,但它不工作。

//對於我正在使用

scene.registerUpdateHandler(new IUpdateHandler() { 
      @Override 
      public void reset() { 

      } 

      @Override 
      public void onUpdate(final float pSecondsElapsed) {  
       checkCollision(); 
} 

我能得到logcat的最後4幀的數量。但屏幕沒有更新..

如何刷新場景。

checkCollision() 

{ 

if(sprite.collidesWith(animSprite)) 

    try 
        { 

        for (int i = 0; i < 4; i++) {           

         animSprite.setCurrentTileIndex(animBlast);      

         Log.v("balst",""+animBlast); 

         animBlast++; 

         if (animBlast> 15) { 

          animBlast= 12; 

         } 

         Thread.sleep(10); 

        } 

        } 
        catch (Exception e) { 

         // e.printStackTrace(); 

     } 
} 

回答

2

對於AnimatedSprite你有一個sprite.animate(long[] pFrameDurations, int pFirstTileIndex, int pLastTileIndex, int loopCount)方法,即做的幀變化環路從pFirstTileIndexpLastTileIndex與幀持續時間也被定義的loopCount。我覺得這是你要找的。

+0

雅其做工精細的感謝,在andengine可以使用了Thread.sleep方法 – JohnRaja

+0

@JohnRaja,還沒有過覺得需要這 – Egor

2

在更新線程中不應該使用Thread.sleep(),因爲這會阻止所有其他更新和重繪。正如葉戈爾所說的那樣查看AnimatedSprite.animate()方法。

如果您想要類似睡眠的東西,請使用AndEngine中的TimerHandler。將false更改爲true以獲取重複計時器。

TimerHandler my_timer = new TimerHandler(10, false, 
    new ITimerCallback() { 
     @Override 
     public void onTimePassed(final TimerHandler pTimerHandler) { 
      // Do your thing  
     } 
}); 
scene.registerUpdateHandler(my_timer);