音乐及音效
初始化和退出

一个游戏除了精美的画面效果,还要有与之相对的音效。本节,我们要讲解的是音效和背景音乐的播放。 先把音频播放的扩展库加上:

#include "SDL2/SDL_mixer.h"
此库中包含了与音频播放有关的函数,打开音频播放器
int Mix_OpenAudio(int frequency, Uint16 format, int channels, int chunksize);

这个函数第一个参数为播放器的播放频率,如果你对音频处理播放很了解,那么你可以填上你自己认为最合适的值,如果不了解,仅仅是想使用,和我一样小白,那么填上Mixer为我们准备的MIX_DEFAULT_FREQUENCY,第二个参数为音频播放格式,咱们也填上默认的值MIX_DEFAULT_FORMAT,第三个是播放的声道,填默认的吧 MIX_DEFAULT_CHANNELS,第四个是音效的默认大小,这个不能随便填,看你的音频文件,自己尝试,填上一个值,如果播放有延迟那么就适当改小一点。

Mix_OpenAudio(MIX_DEFAULT_FREQUENCY, MIX_DEFAULT_FORMAT, MIX_DEFAULT_CHANNELS, 2048);

还有退出函数

Mix_Quit();
Mix_Chunk 音效 code

mixer有一个储存音效的结构体Mix_Chunk用来储存音效,我们可以通过Mix_LoadWAV来加载音频文件

   Chunk[0] = Mix_LoadWAV("Gunfire.wav");
    Chunk[1] = Mix_LoadWAV("Bang.wav");
    Chunk[2] = Mix_LoadWAV("Fanfare.wav");
    Chunk[3] = Mix_LoadWAV("peow.wav");
播放音频的函数:

int Mix_PlayChannel(int channel, Mix_Chunk *chunk, int loops);

第一个参数是播放的通道,如果是-1则用空闲的通道,第二个参数是播放的音频,第三个是循环次数,当然,从0开始计数。返回播放音乐的通道

释放函数

void  Mix_FreeChunk(Mix_Chunk *chunk);

Mix_Music 音乐 code

结构体Mix_Music

加载函数

Mix_Music * Mix_LoadMUS(const char *file);

释放函数

void Mix_FreeMusic(Mix_Music *music);

播放函数

int Mix_PlayMusic(Mix_Music *music, int loops);

loop是播放时是否循环播放,让我们看看其他函数

//暂停
void Mix_PauseMusic(void);
//恢复播放
void Mix_ResumeMusic(void);
//倒带
void Mix_RewindMusic(void);
//用来判断是否暂停
int Mix_PausedMusic(void);
//是否正在播放音乐
int Mix_PlayingMusic(void);

在使用以上函数前,有几个需要注意的地方。

还有一些要注意的是,由于解码器等原因,导致有些格式的音频无法播放。目前Android平台已知的为mp3格式的文件。在使用音频播放的时候最好是使用wav格式音频。当然,在Linux内核的平台ogg也比较通用,比如Android。内置音频基本为ogg格式。

上一节 目录 回到顶部
Copyright © 2014 冯世昌 保留所有权利