LibGDX游戏引擎-9-游戏音乐(Audio)

一个可玩性高的游戏,必须要有优美的音乐,才能满足用户的需要。游戏中的音乐有许多种,例如:背景音乐、游戏插曲、打击声、按键声等,这些都是游戏必不可少的元素。libgdx引擎同样为我们封装了音频模块(The Audio Module)为了方便我们能更好的开发游戏,今天我们就来详细的介绍下,libgdx中的音频模块的使用方法。
libgdx的音频其实真的很简单。你可以使用三种方式来输出你所需要的声音:

  • 第一种情况像枪声、按键声、转屏声等这些都可以使用Sound来实现。
  • 第二种就是类似于背景音乐、人物对话等比较长的音乐可以使用Music来实现,
  • 第三种就是你直接写PCM数据AudioDevice。libgdx封装了这3种类型的声音输出作为接口,

    Audio 接口

    public interface Audio {
    
       public Sound newSound(FileHandle fileHandle);
    
       public Music newMusic(FileHandle file);
    
       public AudioDevice newAudioDevice(boolean isMono);
    
    }

     
    他们被称为:声音、AudioDevice、音乐。声音和应用都是系统资源。如果图形资源一样,你必须在它们不再被使用的时候,通过调用Sound.dispose()和Music.dispose()方法释放它们。Libgdx支持mp3,Ogg以及Wave文件格式,我建议你在大多数情况下使用Ogg格式。如果你需要对音频设备更多的控制,那么你可以使用AudioDevice和AudioRecorder类,这两个类可以从Audio接口得到。这些类允许你从物理音频设备输出PCM音频样本,也允许你使用麦克风记录PCM样本。不要忘记清理它们。

支持格式:mp3、ogg、wav等。

大家可以看到,接口中包含2个方法,都可以通过检索文件的方式来获取我们所要使用的资源,当你创建一个新的AudioDevice时候,可以指定是否设置单声道或立体声。如果不设置的话,libgdx默认设置为44100Hz采样率,这样方便我们使用音频接口。

Sound  sound = Gdx.audio.newSound(Gdx.files.internal(“sound.wav”));
Music music = Gdx.audio.newMusic(Gdx.files.internal(“xxx.ogg”));

 

下面介绍Sound类

下面介绍Sound类

 

Sound 类
Sound(声音)类旨在播放声音效果。通常你从一个文件中加载声音效果,根据某些事件,例如僵尸脑袋爆炸,调用Sound.play()方法播放它。声音通常很短,在几秒钟的范围内。他们会在内存中加载和解码。如果它们长时间的运行,很可能会占据很大的一些内存。
API定义:

一段短音频的剪辑,可以在实现多次播放。它是完全加载到内存的,并且只负责加载小的音频文件。当该生硬使用结束后,调用dispose方法来销毁。

支持格式:

支持wav格式,不支持ogg格式。

使用方法:

首先是声明变量,由于需要加载如文件,这样就需要用到内部载入命令如何加入,前面的教程我们已经学习了,不清楚的同学可以去看一下,复习一下。随后我们是通过audio接口来创建新的newSound,而不是创建一段声音。代码如下:

Sound  sound = Gdx.audio.newSound(Gdx.files.internal(“sound.wav”));

方法介绍:

  • (1)设置循环播放:在Sound类中自带了一个setLooping(boolean 参数)方法,将括号的参数 真 是设置循环播放,
  • 假 是仅播放一次。
  • (2)设置播放:声音当然要有播放的方法了,我们通过 play()方法来实现声音的播放。
  • (3)设置音量大小:通过 setVolume(int i)方法来这只音量大小,在括号内传入整形参数,就可以设置播放音量大小了。
     

播放代码如下:

sound.setLooping(true);
sound.play();
sound.setVolume(15);

 

下面介绍Music类

下面介绍Music类

Music 类
Music(音乐)是你所想要使用的为了播放很长事件的声音(或者,好吧,就是音乐)的类。音乐是流的形式,那意味它仅仅是部分被装载进入了内存,根据文件格式解码,然后输出到音频设备中。

API定义:

一段长音频的剪辑,可以在实现多次播放。它是完全加载到内存的,并且只负责加载大的音频文件。当该声音使用结束后,调用dispose方法来销毁。

支持格式:

支持MP3 OGG WAV等格式。

使用方法:

首先是声明变量,由于需要加载如文件,这样就需要用到内部载入命令如何加入,随后我们是通过audio接口来创建新的newSound,而不是创建一段声音。

代码如下:

Music music = Gdx.audio.newMusic(Gdx.files.internal(“xxx.ogg”));

方法介绍:

  • (1)设置循环播放:在music类中自带了一个setLooping(boolean 参数)方法,将括号的参数 真 是设置循环播放,假是仅播放一次。
  • (2)设置播放:声音当然要有播放的方法了,我们通过 play()方法来实现声音的播放。
  • (3)设置音量大小:通过 setVolume(int i)方法来这只音量大小,在括号内传入整形参数,就可以设置播放音量大小了。
  • (4)设置播放:通过play()方法来实现开始播放。
  • (5)设置暂停:通过pasue()方法来实现暂停。
    播放代码如下:
    music.setLooping(true);
    music.play();
    music.setVolume(15);