0

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 ソリューションでもかまいません。

4

2 に答える 2

1

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

于 2012-04-27T16:08:46.940 に答える
1

遅延の原因は、特定のデバイス、おそらくプロセッサに強力なハードウェア サポートがないことです。他のデバイスで試したところ、問題なく動作したためです。

于 2012-04-25T16:41:47.910 に答える