AndEngine ライブラリを使用して Android ライブ壁紙アプリケーションを作成しました。壁紙には、サウンド付きのスイングアニメーションがあります。
問題は、スイング サウンドが再生されるたびに、スイング アニメーションが数ミリ秒遅延することです。
これに対する解決策はありますか?音を鳴らすためのスレッドを作ってみたのですが、それでもやはり遅れてしまいました。
コードはこんな感じ…
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();
}
}
AndEngine を知らなくても、純粋な openGL ES ソリューションでもかまいません。