问题描述:

I'm practicing in AndEngine.

I made a background, a sprite, and have added motion and gravity.

So I decided to practice a bit with the background music and sounds, but I have a problem. Now when I start the application I get the black screen, and the sprite is distorted, and of course the music does not sound.

Can you help? this is the code:

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();

}

Thanks!


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)

网友答案:

OOOoooo I know your problem now, add this to your EngineOptions class

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

When initiating the EngineOptions you must indicate that you will be requiring sound for your scene. Just a slight oversight you made on the EngineOptions method.

相关阅读:
Top