2011-08-01 11 views
0

私はスプライトとアニメーションスプライトを使用しています。アニメーションスプライトを16フレーム使用しました。左、右、上、下、そして最後の4つのフレームがアニメーションを爆破します。アニメーションSpriteスプライトと衝突アニメーションのためのThread.sleep(Andengine)

//animSprite.setCurrentTileIndex(leftCount); 

..私は5秒間の最後の4つのコマを表示したいです。 andengineを使って作る方法。私はThread.sleepで試してみましたが、動作しません。

//更新のために、私は

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

      } 

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

を使用していますIができlogcatの最後の4つのコマ番号を取得します。しかし画面は更新されません。

シーンをリフレッシュする方法。 AnimatedSpriteについては

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

あなたはまた、定義されたフレーム持続時間とpFirstTileIndexからpLastTileIndexにフレームの変更のループのloopCountを行いsprite.animate(long[] pFrameDurations, int pFirstTileIndex, int pLastTileIndex, int loopCount)方法を、持っています。私はこれがあなたが探しているものだと感じています。

+0

屋その作業罰金おかげで、andengineでは、方法 – JohnRaja

+0

@JohnRajaをのThread.sleep使用することが可能であり、これまでこのために必要と感じていません – Egor

2

更新スレッドではThread.sleep()を使用しないでください。他のすべての更新と再描画がブロックされるためです。代わりに、AnimatedSprite.animate()メソッドを調べてください。

睡眠に似たものを使用する場合は、AndEngineのTimerHandlerを使用してください。繰り返しタイマーを取得するにはfalsetrueに変更してください。

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