【AndEngine】AndEngine播发音乐和音效
【AndEngine】AndEngine播放音乐和音效缺少背景音乐和音效的游戏是不完整的。首先定义两个变量,一个用来播放
【AndEngine】AndEngine播放音乐和音效
缺少背景音乐和音效的游戏是不完整的。
首先定义两个变量,一个用来播放背景音乐,一个用来播放音效
[java] view plaincopy
- private Music mMusic;
- private Sound mSound;
AndEngine中播放声音需要在onCreateEngineOptions()方法里先进行声明
[java] view plaincopy
- final EngineOptions engineOptions = new EngineOptions(true,
- ScreenOrientation.PORTRAIT_FIXED,
- new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT),
- camera);
- // 声明程序要使用背景音乐
- engineOptions.getAudioOptions().setNeedsMusic(true);
- // 声明程序要使用音效
- engineOptions.getAudioOptions().setNeedsSound(true);
在onCreateResources()方法中加载音乐和音效资源
[java] view plaincopy
- MusicFactory.setAssetBasePath("mfx/");
- try {
- this.mMusic = MusicFactory.createMusicFromAsset(this.mEngine.getMusicManager(),
- this, "lx.mp3");
- this.mMusic.setLooping(true);
- } catch (final IOException e) {
- Debug.e(e);
- }
-
- SoundFactory.setAssetBasePath("mfx/");
- try {
- this.mSound = SoundFactory.createSoundFromAsset(this.mEngine.getSoundManager(),
- this, "click.ogg");
- } catch (final IOException e) {
- Debug.e(e);
- }
我将音乐和音效的使用方法放在了屏幕的点击事件里
[java] view plaincopy
- scene.setOnSceneTouchListener(new IOnSceneTouchListener() {
- @Override
- public boolean onSceneTouchEvent(Scene pScene, TouchEvent pSceneTouchEvent) {
- if (pSceneTouchEvent.isActionUp()) {
- if (!MainActivity.this.mMusic.isPlaying()) {
- MainActivity.this.mSound.play();
- MainActivity.this.mMusic.play();
- } else {
- MainActivity.this.mMusic.pause();
- }
- }
- return false;
- }
- });
经测试mp3和ogg格式的文件都支持。