音效和音乐

游戏开发中,声音大致分为两种:音效和音乐。音效是指那些较短的音频,比如枪声、尖叫声,音效会一次全部加载到内存,如果有需要,会循环播放,甚至多个音效同时播放。音乐一般就是我们常说的BGM(Background Music),它是一段很长的音乐,没法一次加载到内存中,通常用来缓缓播放烘托游戏的背景气氛。

LibGDX中,Sound类封装了音效,Music类封装了音乐。

Sound的使用

下面例子代码展示了Sound类的使用,我们这里循环播放一段wav格式的音频。

package com.gacfox.gdxdemo;

import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.audio.Sound;
import com.badlogic.gdx.files.FileHandle;

public class MyGdxGame extends ApplicationAdapter {

    private Sound sound;

    @Override
    public void create () {
        FileHandle soundFile = Gdx.files.internal("12359.wav");
        sound = Gdx.audio.newSound(soundFile);
        sound.loop();
    }

    @Override
    public void render () {

    }

    @Override
    public void dispose () {
        sound.dispose();
    }
}

loop()函数可以实现循环播放,play()则只播放一次。前面说过音效是全部加载到内存的,如果因为场景切换等原因,某些音效再也不会用到了,我们可以将它们释放掉,这里我们可以通过sound.dispose()来手动释放内存。

Music的使用

下面例子代码展示了Music类的使用,我们这里循环播放一段mp3格式的BGM。

package com.gacfox.gdxdemo;

import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.audio.Music;
import com.badlogic.gdx.files.FileHandle;

public class MyGdxGame extends ApplicationAdapter {

    private Music music;

    @Override
    public void create() {
        FileHandle musicFile = Gdx.files.internal("addiction.mp3");
        music = Gdx.audio.newMusic(musicFile);
        music.setLooping(true);
        music.play();
    }

    @Override
    public void render() {

    }

    @Override
    public void dispose() {
        music.dispose();
    }
}

代码很简单,就不多解释了。

作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。