游戏的音乐和音效是游戏的灵魂,好的音乐音效能使游戏更生动,更真实。
利用AndEngine添加游戏音效十分方便,首我们在assets中创建子音效资源文件夹gfx,将歌曲放入,这里我们放入了music.mp3,sound.mp3。前为背景音乐,后为游戏音效。
1、首先在设定使Engine知道我们要使用音乐音效。在onCreateEngineOptions()方法中,我们加入如下两句代码:
engineOptions.getAudioOptions.setNeedsMusic(true);
engineOptions.getAudioOptions.setNeedsSound(true);
2、加载音乐资源,在onCreateResources()方法中,利用MusicFactory ,和SoundFactory加载资源。代码如下:
SoundFactory.setAssetBasePath("sfx/");
MusicFactory.setAssetBasePath("sfx/");
Sound mSound=SoundFactory.createSoundFromAsset(getSoundManager(),this,"sound.mp3");
Music mMusic=MusicFactory.crateMusicFromAsset(getMusicManager(),this,"music.mp3");
3、一但音乐加载至SoundFactory中,我们可以通过mSound.play();播放。
但是MusicFactory处理的方式和SoundFactory不同,因为音效时间很短,而音乐一般作为背景音,循环播放的,所以应在onResumeGame()中设定.
@override
public synchronized void onResumeGame(){
if(mMusic!=null && !mMusic.isPlaying()){
mMusic.play();
}
super.onResumeGame();
}
背景音就会一值播放,直到暂停:
@override
public synchroized void onPauseGame(){
if(mMusic!=null && mMusic.isPlaying()){
mMusic.pause();
}
super.onPauseGame();
}
PS:注意,一定要在音乐资源加载完,才能播放,即调用play方法,否则异常,所以最好在onCreateResources()执行完后再调用。
当然Andengine是调用安卓的本地库实现音乐的播放的,所以还有一些其它的方法支持我们对Music播放操作。
seekTo(pMilliseconds):跳转到pMilliseconds时间处。
setLooping:是否支持循环播放
setOnCompletionListener:添加监听器给Music对象,保证在音乐加载完后触发相应的事件。
setVolume:设定音乐音量。
对于Sound:
setLooping:不仅具有重复播放的功能,还能通过setLoopCount(pLoopCount)来设置重复的次数。
setRate(pRate):设置音效播放的频率,比如正常是1.0f,设置0.5f,播放速度减慢,设置2.0f,则播放速度加快。
setVolume:设置音效音量