0

我试图在这段代码中循环声音。在主要 try and 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 回答