2013-10-10 173 views
1

我正在练习AndEngine。 我做了一个背景,一个精灵,并增加了运动和重力。AndEngine背景音乐错误

所以我决定练习一下背景音乐和声音,但是我有一个问题。现在,当我启动应用程序时,屏幕出现黑屏,精灵失真,当然音乐听不到。

你能帮忙吗?这是代码:

public class MainActivity extends BaseGameActivity { 
    Scene scene; 
    private Music music; 
    protected static final int CAMERA_WIDTH = 850; 
    protected static final int CAMERA_HEIGHT = 480; 
    BitmapTextureAtlas playerTexture; 
    ITextureRegion playerTexureRegion; 
    PhysicsWorld physicsWorld; 



    @Override 
    public EngineOptions onCreateEngineOptions() { 
     // TODO Auto-generated method stub 

     Camera mCamera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT); 

     EngineOptions options = new EngineOptions(true, 
       ScreenOrientation.LANDSCAPE_FIXED, new FillResolutionPolicy(), mCamera); 
     return options; 
    } 

    @Override 
    public void onCreateResources(
      OnCreateResourcesCallback pOnCreateResourcesCallback) 
      throws Exception { 
     // TODO Auto-generated method stub 


     loadGfx(); 
     loadSounds(); 

     // resource 
     pOnCreateResourcesCallback.onCreateResourcesFinished(); 
    } 
    private void loadSounds() { 
     // TODO Auto-generated method stub 
     try 
     { 
      music = MusicFactory.createMusicFromAsset(mEngine.getMusicManager(), this,"mfx/oldf.ogg"); 
     } 
     catch (IOException e) 
     { 
      e.printStackTrace(); 
     } 

    } 

    private void loadGfx() { 
     // TODO Auto-generated method stub 
     BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/"); 
     // width and height power of 2^x 
     playerTexture = new BitmapTextureAtlas(getTextureManager(), 64, 64); 
     playerTexureRegion = BitmapTextureAtlasTextureRegionFactory 
       .createFromAsset(playerTexture, this, "player.png", 0, 0); 
     playerTexture.load(); 

    } 
    @Override 
    public void onCreateScene(OnCreateSceneCallback pOnCreateSceneCallback) 
      throws Exception { 
     this.scene = new Scene(); 
     this.scene.setBackground(new Background(0.09804f, 0.6274f, 0.8784f)); 
     this.music.play(); 
     physicsWorld = new PhysicsWorld(new com.badlogic.gdx.math.Vector2(0, SensorManager.GRAVITY_EARTH), false); 
     this.scene.registerUpdateHandler(physicsWorld); 
     createWalls(); 

     pOnCreateSceneCallback.onCreateSceneFinished(this.scene); 

    } 

    private void createWalls() { 
     // TODO Auto-generated method stub 
     FixtureDef WALL_FIX = PhysicsFactory.createFixtureDef(0.0f, 1.0f, 0.0f); 
     Rectangle ground = new Rectangle(0, CAMERA_HEIGHT - 15, CAMERA_WIDTH, 
       15, this.mEngine.getVertexBufferObjectManager()); 
     ground.setColor(new Color(15, 50, 0)); 
     PhysicsFactory.createBoxBody(physicsWorld, ground, BodyType.StaticBody, 
       WALL_FIX); 
     this.scene.attachChild(ground); 
    } 


    @Override 
    public void onPopulateScene(Scene pScene, 
      OnPopulateSceneCallback pOnPopulateSceneCallback) throws Exception { 
     // TODO Auto-generated method stub 

     Sprite sPlayer = new Sprite(CAMERA_WIDTH/2, CAMERA_HEIGHT/2, 
       playerTexureRegion, this.mEngine.getVertexBufferObjectManager()); 
     sPlayer.setRotation(45.0f); 
     final FixtureDef PLAYER_FIX = PhysicsFactory.createFixtureDef(10.0f, 
       1.0f, 0.0f); 
     Body body = PhysicsFactory.createCircleBody(physicsWorld, sPlayer, 
       BodyType.DynamicBody, PLAYER_FIX); 
     this.scene.attachChild(sPlayer); 
     physicsWorld.registerPhysicsConnector(new PhysicsConnector(sPlayer, 
       body, true, false)); 

     pOnPopulateSceneCallback.onPopulateSceneFinished(); 
    } 

谢谢!


UPDATE

的logcat:

10-09 21:07:46.635: E/AndEngine(5305): MainActivity.onCreateGame failed. @(Thread: 'GLThread 4852') 
10-09 21:07:46.635: E/AndEngine(5305): java.lang.IllegalStateException: To enable the MusicManager, check the EngineOptions! 
10-09 21:07:46.635: E/AndEngine(5305): at org.andengine.engine.Engine.getMusicManager(Engine.java:294) 
10-09 21:07:46.635: E/AndEngine(5305): at com.example.prueba2.MainActivity.loadmusic(MainActivity.java:73) 
10-09 21:07:46.635: E/AndEngine(5305): at com.example.prueba2.MainActivity.onCreateResources(MainActivity.java:62) 
10-09 21:07:46.635: E/AndEngine(5305): at org.andengine.ui.activity.BaseGameActivity.onCreateGame(BaseGameActivity.java:181) 
10-09 21:07:46.635: E/AndEngine(5305): at org.andengine.ui.activity.BaseGameActivity.onSurfaceCreated(BaseGameActivity.java:110) 
10-09 21:07:46.635: E/AndEngine(5305): at org.andengine.opengl.view.EngineRenderer.onSurfaceCreated(EngineRenderer.java:80) 
10-09 21:07:46.635: E/AndEngine(5305): at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1471) 
10-09 21:07:46.635: E/AndEngine(5305): at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1241) 
+0

你的'mfx'文件夹在你的资产目录中吗? – kabuto178

+0

@ kabuto178是的,在我的资产目录中,我想我放错了地方-loadSounds(); – Loreln

+0

你现在工作? – kabuto178

回答

10

OOOOOOO我现在知道你的问题,它添加到您的EngineOptions类

options.getAudioOptions().setNeedsMusic(true); 
    options.getAudioOptions().setNeedsSound(true); 

当启动EngineOptions你必须表明您将要求您的场景发出声音。只是你在EngineOptions方法上做了轻微的疏忽。

+2

你好!谢谢!!!只是,在我的情况下,我使用了-options.getAudioOptions()。setNeedMusic(true); – Loreln

+0

当然,我很高兴我可以帮忙 – kabuto178