Heli lisamine¶
LibGDX pakub mugavaid võimalusi heliga töötamiseks. Peamised klassid selleks on:
Sound — kasutatakse lühikeste helide jaoks, nagu efektid (nt laskmine, hüppeheli, kokkupõrked, nuppu vajutamine).
Music — kasutatakse pikkade helifailide, nagu taustamuusika, esitamiseks.
LibGDX toetab järgmisi heliformaate:
MP3
OGG
WAV
Enamasti on parem kasutada mängu muusika juhtimiseks ühte klassi.
Muusika juhtimise klassi loomise näide¶
import com.badlogic.gdx.audio.Sound;
import com.badlogic.gdx.audio.Music;
public class MusicControl {
public void playMusic(Music music) {
music.play();
}
public float getMusicVolume(Music music) {
return music.getVolume();
}
public void playSound(Sound sound, float volume) {
sound.play(volume);
}
public void disposeMusic(Music music) {
music.dispose();
}
public void disposeSound(Sound sound) {
sound.dispose();
}
public void increaseMusicVolume(Music music, float volume) {
float lastVolume = this.getMusicVolume(music);
music.setVolume(lastVolume + volume);
}
public void decreaseMusicVolume(Music music, float volume) {
float lastVolume = this.getMusicVolume(music);
if (lastVolume > volume) {
music.setVolume(lastVolume - volume);
} else {
music.setVolume(0f);
}
}
public void stopMusic(Music music) {
music.stop();
}
public void setMusicVolume(Music music, float volume) {
music.setVolume(volume);
}
public void setSoundVolume(Sound sound, float volume, long l) {
sound.setVolume(l, volume);
}
public void setMusicLooping(Music music, boolean looping) {
music.setLooping(looping);
}
}
MusicControl meetodid¶
1. Muusika esitamine
Muusika esitamiseks saab kasutada playMusic meetodit.
public void playMusic(Music music) {
music.play();
}
Näide:
Music backgroundMusic = Gdx.audio.newMusic(Gdx.files.internal("sounds/background_music.mp3"));
musicControl.playMusic(backgroundMusic);
2. Muusika helitugevuse hankimine ja seadistamine
Saate hankida praeguse helitugevuse, kasutades getMusicVolume meetodit. Helitugevuse muutmiseks kasutage setMusicVolume.
public float getMusicVolume(Music music) {
return music.getVolume();
}
public void setMusicVolume(Music music, float volume) {
music.setVolume(volume);
}
Näide:
float currentVolume = musicControl.getMusicVolume(backgroundMusic);
musicControl.setMusicVolume(backgroundMusic, 0.5f);
3. Muusika helitugevuse suurendamine ja vähendamine
Kui on vaja helitugevust järk-järgult reguleerida, saab kasutada meetodeid increaseMusicVolume ja decreaseMusicVolume.
public void increaseMusicVolume(Music music, float volume) {
float lastVolume = this.getMusicVolume(music);
music.setVolume(lastVolume + volume);
}
public void decreaseMusicVolume(Music music, float volume) {
float lastVolume = this.getMusicVolume(music);
if (lastVolume > volume) {
music.setVolume(lastVolume - volume);
} else {
music.setVolume(0f);
}
}
Näide:
musicControl.increaseMusicVolume(backgroundMusic, 0.1f); // Increase volume by 10%
musicControl.decreaseMusicVolume(backgroundMusic, 0.1f); // Decrease volume by 10%
4. Heliefektide esitamine
Heliefektid on tavaliselt lühikesed, ja neid saab esitada määratud helitugevusega, kasutades playSound meetodit.
public void playSound(Sound sound, float volume) {
sound.play(volume);
}
Näide:
Sound explosionSound = Gdx.audio.newSound(Gdx.files.internal("sounds/explosion.ogg"));
musicControl.playSound(explosionSound, 0.8f);
5. Heliefekti instantside helitugevuse seadistamine
Kui soovite reguleerida individuaalsete heliefektide instantside helitugevust (näiteks kui heli esitatakse mitu korda), saab kohandada helitugevust iga instantsi kohta, kasutades setSoundVolume.
public void setSoundVolume(Sound sound, float volume, long soundID) {
sound.setVolume(soundID, volume);
}
Näide:
long soundID = explosionSound.play();
musicControl.setSoundVolume(explosionSound, 0.5f, soundID);
6. Muusika tsükkel
Muusika määramiseks, et see mängiks pidevalt (kasulik taustamuusika jaoks), saab kasutada setMusicLooping meetodit.
public void setMusicLooping(Music music, boolean looping) {
music.setLooping(looping);
}
Näide:
musicControl.setMusicLooping(backgroundMusic, true);
7. Muusika peatamine
Kui muusika mängib, saab selle peatada, kasutades stopMusic meetodit.
public void stopMusic(Music music) {
music.stop();
}
Näide:
musicControl.stopMusic(backgroundMusic);
8. Muusika ja heli disposing
Kui mäng enam ei vaja teatud heliresurssi, on oluline see vabastada, et vabastada mälu. Kasutage meetodeid disposeMusic ja disposeSound ressursside vabastamiseks.
public void disposeMusic(Music music) {
music.dispose();
}
public void disposeSound(Sound sound) {
sound.dispose();
}
Näide:
musicControl.disposeMusic(backgroundMusic);
musicControl.disposeSound(explosionSound);
Näide tegevusele heli lisamisest¶
/**
* Deals damage to the player.
*
* @param damage The amount of damage to deal.
*/
public void takeDamage(int damage) {
currentHealth -= damage;
// The punch sound is always played
musicControl.playSound(punchSound, 0.4f);
// Check if the player is dead
if (currentHealth <= 0) {
musicControl.playSound(deathSound, 1.5f);
die();
}
}
Näide nupule heli lisamisest¶
/**
* This method creates a lobby "update" button.
*/
private void updateButton() {
// Create a texture
ImageButton.ImageButtonStyle buttonStyle = new ImageButton.ImageButtonStyle();
buttonStyle.up = new TextureRegionDrawable(new TextureRegion(buttonTexture));
// Create the button with the defined style
ImageButton updateButton = new ImageButton(buttonStyle);
updateButton.setSize(75, 40);
// Add a listener to the button that triggers actions when clicked
updateButton.addListener(new ClickListener() {
@Override
public void clicked(InputEvent event, float x, float y) {
// Play the button click sound
musicControl.playSound(buttonClickSound, 0.6f);
updatePlayerList();
}
});
updateButton.setPosition(50, 90);
stage.addActor(updateButton);
}