AndEngine背景音乐错误

时间:2013-10-10 01:41:41

标签: android background andengine playback

我在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();
    }

谢谢!


更新

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)

1 个答案:

答案 0 :(得分:10)

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

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

启动EngineOptions时,您必须指明您的场景需要声音。只是对EngineOptions方法稍作疏忽。