// get an available clip to play it
Clip clip = null;
for (Clip clipTemp : players) {
if (!clipTemp.isOpen()) {
clip = clipTemp;
break;
}
}
if (clip == null) {
// no available player found, don't play
return;
}
clip.open(audioFormat, audioByteData, 0, audioByteData.length);
clip.start();
(플레이어는 처음에 대기 시간을 줄이기 위해 열어 놓은 클립 목록, 정지 이벤트가 검색 될 때 라인을 닫습니다.)
내가 겪고있는 문제는 사운드를 재생할 때 최대 1 초의 간헐적 인 지연입니다. 이것은 꽤 가난합니다.
이것을 향상시킬 방법이 있습니까? SourceDataLines
은 가치가 있습니까?
안녕하세요 - 답변 해 주셔서 감사합니다. 동일한 사운드가 여러 번 재생되어야 할 수도 있습니다. 당신은 전에 각 음향 효과에 대해 여러 클립을 풀링한다고 제안 해 주시겠습니까? – Pool
예 - 일반적으로 모든 클립을로드하는 'SoundManager'싱글 톤 클래스를 구현합니다. 위의 코드는 사운드를 여러 번 재생하지만 매번 클립을 재설정합니다. 동일한 사운드의 5 번 플레이를 말하고 약간 다른 간격으로 섞어서 5 개의 클립을로드 한 다음 playSFX()를 호출하면 재생할 다음 클립을 가리키는 카운터를 증가시키는 것이 좋습니다. . – JSmyth
@JSmyth 이처럼 뭔가를하고 있어요,하지만 같은 소리 파일의 여러 AudioInputStream 열면 LineUnavailableException 점점 시작합니다. 내 질문 좀 봐 줄래? http://stackoverflow.com/questions/20184650/why-am-i-getting-this-lineunavailableexception – trusktr