0

このコードでサウンドをループさせようとしています。メインの try と catch の finally ブロックで、次のようにします。

    if (loop) {
        auline.flush();
        run();
    } else {
        ended=true;
        auline.drain();
        auline.close();
    }

しかし、それはスタックオーバーフローを引き起こします。新しいインスタンスを作成せずに、このサウンドを安全にループするにはどうすればよいですか?

4

1 に答える 1

3

run内から呼び出していますrun。これにより、最終的にコール スタックがいっぱいになり、スタック オーバーフロー例外が発生します。

さて、問題はそれをどのように克服するかです。

run メソッド内でループする必要があります。私が考えることができる最善の方法は、実行メソッドに「終了」トリガーを含めることです

public void run() {
    while(loop) {
        //...play sound
    }
}

メソッドを使用してフラグ stopをトリガーすることもできますloop

于 2012-07-29T08:24:15.850 に答える