读书人

【AndEngine】AndEngine播发音乐和音效

发布时间: 2013-09-05 16:02:07 作者: rapoo

【AndEngine】AndEngine播放音乐和音效

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

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

[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. SoundFactory.setAssetBasePath("mfx/");
  10. try {
  11. this.mSound = SoundFactory.createSoundFromAsset(this.mEngine.getSoundManager(),
  12. this, "click.ogg");
  13. } catch (final IOException e) {
  14. Debug.e(e);
  15. }
我将音乐和音效的使用方法放在了屏幕的点击事件里

[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格式的文件都支持。

读书人网 >移动开发

热点推荐