Как вы осуществляете постоянное обновление звука Java?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как вы осуществляете постоянное обновление звука Java?

Сообщение Anonymous »

У меня есть фрагмент кода для видеоигры, который обновляет усиление музыкального цикла в зависимости от того, насколько далеко игрок находится от задней двери. РЕДАКТИРОВАТЬ. Этот код обновлен с помощью GainControl в качестве переменной экземпляра и с фиксированным значением усиления.
public void updateMusic()
{
int endX = currentMap.getEndPointX() * TILE_WIDTH;
int endY = currentMap.getEndPointY() * TILE_HEIGHT;

double dist = Math.hypot(endX - playerX, endY - playerY);

if(dist < 300)
{
double gain = 600 / dist;

gainControl.setValue(Math.min(0, Math.max(gainControl.getMinimum(), (float) (-22 + gain))));
}
else
{
gainControl.setValue(-20f);
}

}


Усиление звука обновляется, но очень прерывисто. У меня есть цикл, который обновляет его 10 раз в секунду, но вместо постоянного обновления он внезапно случайным образом скачет/падет. Есть ли способ заставить аудиосистему обновиться? Или это неправильный способ создания такого динамического звука?
Изменить. Вот другие методы, которые я использую, а также соответствующие объявления переменных вверху

Clip runningClip;
Clip walkingClip;
Clip raveLoop;
FloatControl gainControl;
private AudioInputStream audioStream;

private Clip playSound(String soundName)
{
File file = new File("src/ninja/sounds/" + soundName + ".wav");
try
{
audioStream = AudioSystem.getAudioInputStream(file);
Clip clip = AudioSystem.getClip();
clip.open(audioStream);

clip.start();

return clip;
}
catch(IOException | UnsupportedAudioFileException | LineUnavailableException error)
{
error.printStackTrace();
}

return null;
}

private void startMusic()
{
raveLoop = playSound("bass_rave_loop");
raveLoop.loop(Clip.LOOP_CONTINUOUSLY);

gainControl = (FloatControl) raveLoop.getControl(FloatControl.Type.MASTER_GAIN);
gainControl.setValue(-20.0f);
}


Подробнее здесь: https://stackoverflow.com/questions/787 ... nd-updates
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»