1

ゲームで Clips を使用します。クリップは正常に再生されますが、いくつかの「ショット」の後、次の問題が発生します

スレッド「PulseAudio Eventloop Thread」の例外 java.lang.IllegalStateException: org.classpath.icedtea.pulseaudio.EventLoop.native_iterate(Native Method) at org.classpath.icedtea.pulseaudio.EventLoop.run(EventLoop.java:133) でドレインに失敗しました) java.lang.Thread.run(Thread.java:724) で

私のコード:

public static Clip[] sounds;
...
sounds = new Clip[3];
sounds[0] = getClip("gun.wav");
sounds[1] = getClip("click.wav");
sounds[2] = getClip("over.wav");
...
private void playSound(Clip clp) {
        final Clip clip = clp;
        Runnable soundPlayer = new Runnable() {

            @Override
            public void run() {
                try {
                    if(clip.isActive() || clip.isRunning()) clip.stop();
                    clip.setMicrosecondPosition(0);
                    clip.start();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        };
        new Thread(soundPlayer).start();
}
public void shoot() { //runs when space is clicked 
if(canShoot) playSound(sounds[0]);
}
4

2 に答える 2

1

そのため、OS X でも同様の問題がありました。クリップを停止して最初から再起動しようとすると、クリップが再生されないことがありました。flush()直後に呼び出すことで修正しましたstop()

if(clip.isActive() || clip.isRunning()) {
    clip.stop();
    clip.flush();
}
于 2014-10-21T23:28:19.570 に答える