У меня есть фрагмент кода для видеоигры, который обновляет усиление музыкального цикла в зависимости от того, насколько далеко игрок находится от задней двери. РЕДАКТИРОВАТЬ. Этот код обновлен с помощью 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
Как вы осуществляете постоянное обновление звука Java? ⇐ JAVA
Программисты JAVA общаются здесь
-
Anonymous
1721958170
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);
}
Подробнее здесь: [url]https://stackoverflow.com/questions/78795736/how-do-you-do-continuous-java-sound-updates[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия