【AndEngine】AndEngine播放音乐和音效

来源:互联网 发布:电脑淘宝如何举报店铺 编辑:程序博客网 时间:2024/05/22 00:18

缺少背景音乐和音效的游戏是不完整的。

首先定义两个变量,一个用来播放背景音乐,一个用来播放音效

[java] view plaincopy
  1. private Music mMusic;  
  2. private Sound mSound;  

AndEngine中播放声音需要在onCreateEngineOptions()方法里先进行声明

[java] view plaincopy
  1. final EngineOptions engineOptions = new EngineOptions(true,   
  2.                              ScreenOrientation.PORTRAIT_FIXED,   
  3.                              new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT),   
  4.                              camera);  
  5. // 声明程序要使用背景音乐  
  6. engineOptions.getAudioOptions().setNeedsMusic(true);  
  7. // 声明程序要使用音效  
  8. engineOptions.getAudioOptions().setNeedsSound(true);  

在onCreateResources()方法中加载音乐和音效资源

[java] view plaincopy
  1. MusicFactory.setAssetBasePath("mfx/");  
  2. try {  
  3.     this.mMusic = MusicFactory.createMusicFromAsset(this.mEngine.getMusicManager(), 
  4. this"lx.mp3");  
  5.     this.mMusic.setLooping(true);  
  6. catch (final IOException e) {  
  7.     Debug.e(e);  
  8. }  
  9.   
  10. SoundFactory.setAssetBasePath("mfx/");  
  11. try {  
  12.     this.mSound = SoundFactory.createSoundFromAsset(this.mEngine.getSoundManager(),
  13.  this"click.ogg");  
  14. catch (final IOException e) {  
  15.     Debug.e(e);  
  16. }  
我将音乐和音效的使用方法放在了屏幕的点击事件里

[java] view plaincopy
  1. scene.setOnSceneTouchListener(new IOnSceneTouchListener() {  
  2.     @Override  
  3.     public boolean onSceneTouchEvent(Scene pScene, TouchEvent pSceneTouchEvent) {  
  4.         if (pSceneTouchEvent.isActionUp()) {                      
  5.             if (!MainActivity.this.mMusic.isPlaying()) {  
  6.                 MainActivity.this.mSound.play();  
  7.                 MainActivity.this.mMusic.play();  
  8.             } else {  
  9.                 MainActivity.this.mMusic.pause();  
  10.             }  
  11.         }  
  12.         return false;  
  13.     }  
  14. });  
经测试mp3和ogg格式的文件都支持。
原创粉丝点击