2012-04-25 6 views
0

AndEngineライブラリを使用してアンドロイドライブ壁紙アプリケーションを作成しました。壁紙にはサウンド付きのスイングアニメーションがあります。スプライトのアニメーションのサウンドを作成する

問題は、スイングサウンドが再生されるたびに発生し、スイングアニメーションは数ミリ秒間遅れることになります。

私はこのために解決策があることを知りたいですか?私はサウンドを再生するためのスレッドを作成することによって試してみましたが、結果はまだ遅れていました。

コードを使用すると、AndEngineがわからない場合は、純粋なOpenGL ESのソリューションがあまりにも大丈夫です

public class TreeSwingSprite extends AnimatedSprite 
    implements IAnimationListener, IEntityModifierListener { 

    ... 
    private Sound swingSound; 

    // this event happened when user touch the Sprite on screen 
    public boolean onAreaTouched(TouchEvent pSceneTouchEvent, float pTouchAreaLocalX, float pTouchAreaLocalY) { 
     if (pSceneTouchEvent.isActionDown()) { 
      ... 

      long[] frameDuration = new long[] {            
       50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 
       ... 
      }; 

      final int[] frame = {        
       10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 
       ... 
      }; 

      animate(frameDuration, frame, 0, this); // this code execute the animation of the Sprite 

      // play the sound 
      new Thread(new Runnable() { 

       @Override 
       public void run() { 
        if (swingSound != null) swingSound.play(); 
       } 
      }).start(); 

    } 
} 

...このようなものです。

答えて

1

遅れの原因は、特定のデバイスが強力なハードウェアサポートを持っていない、おそらくプロセッサです。他のデバイスで試してみるとうまくいきます。

1

新しいスレッドでサウンドを再生する必要はありません!

関連する問題