Я в настоящее время bussy создаю видеоигру в качестве небольшого побочного проекта, чтобы сохранить навыки программирования в университете. Одним из аспектов видеоигр являются звуковые эффекты, и я ошеломляю, как это сделать лучше всего на Java.Звуковые эффекты на Java?
В настоящее время я использую Clip класс для звуковых эффектов, вот предварительный просмотр (очень простой и общий) код, я использую:
try {
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(new File(path));
clip = AudioSystem.getClip();
clip.open(audioInputStream);
if(loop)
{
clip.loop(Integer.MAX_VALUE);
volumeControl = (FloatControl)clip.getControl(FloatControl.Type.MASTER_GAIN);
setVolume(volume);
launched = true;
}
else
{
clip.start();
volumeControl = (FloatControl)clip.getControl(FloatControl.Type.MASTER_GAIN);
setVolume(volume);
running = true;
CoreTime.sfx.add(this);
}
} catch(Exception e){System.out.println(e + "=-=-=-=-=-=-=-=-=-=run SFXPlayer");}
Проблема с Clip класса, однако, что он создает новую тему для себя, на которой он воспроизводит аудио. Наличие большого количества клипов, требуемых для одновременного воспроизведения, может таким образом увеличить количество созданных потоков и даже, возможно, заморозить игру в течение нескольких секунд. С некоторым анализом я получил количество потоков, чтобы увеличить до 60 потоков при одновременном воспроизведении множества звуковых эффектов.
Теперь, очевидно, это нежелательное поведение, и мне интересно, как я могу обойти это и более эффективно реализовать звуковые эффекты. Есть ли методы или способы, о которых вы, ребята, знаете, не создаете это безумно большое количество потоков, где я могу воспроизводить множество звуковых эффектов сразу? Некоторая помощь будет действительно оценена!
«Есть разница между запущенным и запущенным булевым, о чем я не буду здесь объяснять.» «Если вы этого не сделаете, то это неясно, что вы просите **. – progyammer
@progy_rock Булевы не имеют отношения к квесту, поэтому я не вижу смысла в вашем комментарии? – ImJustACowLol