本文链接: http://blog.csdn.net/xietansheng/article/details/50188029
1. 概述
一款优秀的游戏,音频/声音必不可少。LibdGDX 中的游戏音频可分为 音乐(Music) 和 音效(Sound)。LibGDX 支持的音频格式有 mp3、ogg、wav 等,推荐使用 ogg 格式。
(1)Music
一个 Music 实例代表一个音频文件流,Music 并没有把整个音频流都读取到内存中,适合用来表示长时间的音乐(例如背景音乐),Music 支持暂停、恢复、循环播放等操作。当不需要使用到这个 Music 实例时,需要调用它的 dispose() 方法释放资源。Music 在播放时会随着 应用 的 暂停(paused) 和 恢复(resumed) 自动 暂停 和 恢复。
(2)Sound
一个 Sound 实例表示一个简短的音频剪辑,可以并行播放无数次,Sound 会把整个音效都加载到内存中,所以只能加载一些较小的音频文件,适合用来表示游戏中的各种音效(例如 打击音效,碰撞音效,得分音效 等)。当一个 Sound 实例不再需要被使用到时,需要调用它的 dispose() 方法释放资源。
实际上 Music 和 Sound 都只是个接口,要加载音频文件创建对应的实例,LibGDX 的 Audio 模块(Gdx.audio)中的提供了加载音频文件的方法,如下所示:
Music music = Gdx.audio.newMusic(FileHandle);
Sound sound = Gdx.audio.newSound(FileHandle);
2. 代码示例
这个案例需要使用到音频文件,为了方便演示,我在网上找了一个背景音乐文件和一个音效文件上传到了 CSDN 提供下载测试。下载地址如下:
音频文件下载地址: http://download.csdn.net/detail/xietansheng/9329287
下载后解压缩,把压缩包中的两个音频文件复制到 assets 资源文件夹中,添加后结果如下图所示:
主程序代码:
package com.libgdx.test;
import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.audio.Music;
import com.badlogic.gdx.audio.Sound;
import com.badlogic.gdx.graphics.GL20;
/**
* 游戏主程序的启动入口类
*/
public class MainGame extends ApplicationAdapter {
// 背景音乐
private Music music;
// 音效
private Sound sound;
@Override
public void create() {
// 加载背景音乐, 创建 Music 实例
music = Gdx.audio.newMusic(Gdx.files.internal("mymusic.ogg"));
// 背景音乐设置循环播放
music.setLooping(true);
// 设置音量, 值范围 0.0 ~ 1.0
// music.setVolume(float volume);
// 手动暂停播放, 暂停播放后调用 play() 将从暂停位置开始继续播放
// music.pause();
// 手动停止播放, 停止播放后调用 play() 将从头开始播放
// music.stop();
// 手动播放音乐, 这里游戏启动时开始播放背景音乐
music.play();
// 加载音效, 创建 Sound 实例
sound = Gdx.audio.newSound(Gdx.files.internal("mysound.ogg"));
}
@Override
public void render() {
// 黑色清屏
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
if (Gdx.input.justTouched()) {
// 点击屏幕一次, 播放音效一次
sound.play();
}
}
@Override
public void dispose() {
// 当应用退出时释放资源
if (music != null) {
music.dispose();
}
if (sound != null) {
sound.dispose();
}
}
}
创建平台启动器运行主游戏程序代码,背景音乐开始播放,点击屏幕即播放音效。