LibGDX_7.2: 音频(Audio): 音乐(Music) 与 音效(Sound)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xietansheng/article/details/50188029

本文链接: http://blog.csdn.net/xietansheng/article/details/50188029

LibGDX 基础教程(总目录)

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 资源文件夹中,添加后结果如下图所示:

sy_project-audio.png

主程序代码:

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();
        }
    }

}

创建平台启动器运行主游戏程序代码,背景音乐开始播放,点击屏幕即播放音效。


展开阅读全文

没有更多推荐了,返回首页