如何在AndEngine中显示位图精灵?

时间:2014-07-13 12:36:26

标签: android andengine sprite

我是AndEngine Game Development的新手。我正在尝试加载并显示一个精灵,但我在屏幕上没有精灵的空白blcak屏幕。 这是代码:

public class MainActivity extends SimpleBaseGameActivity {

static final int CAMERA_WIDTH = 800; 
static final int CAMERA_HEIGHT = 480;

private static final String TAG = "AndEngineTest";
private BitmapTextureAtlas mBitmapTextureAtlas;
private TextureRegion mPlayerTextureRegion;

@Override
public EngineOptions onCreateEngineOptions() {

    Camera mCamera = new Camera(0, 0, CAMERA_WIDTH , CAMERA_HEIGHT);
    return new EngineOptions(true,ScreenOrientation.LANDSCAPE_SENSOR, 
            new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT), mCamera);

}

@Override
protected void onCreateResources() {
    mBitmapTextureAtlas = new BitmapTextureAtlas(this.getTextureManager(), 32, 32,
            TextureOptions.BILINEAR_PREMULTIPLYALPHA);
    mPlayerTextureRegion = BitmapTextureAtlasTextureRegionFactory.createFromAsset(this.mBitmapTextureAtlas, this, "gfx/face_box.png", 0, 0);
    mBitmapTextureAtlas.load();
}

@Override
protected Scene onCreateScene() {

    this.mEngine.unregisterUpdateHandler(new FPSLogger());

    Scene scene = new Scene();
    scene.setBackground(new Background(3f, 6f, 2f));
    Sprite Player = new Sprite(32, 32, mPlayerTextureRegion, getVertexBufferObjectManager());
    Camera mCamera = new Camera(0, 0, CAMERA_WIDTH , CAMERA_HEIGHT);
    Player.setPosition(mCamera.getWidth()/2 - Player.getWidth()/2,
            mCamera.getHeight() - Player.getHeight() - 10);
    scene.attachChild(Player);



    return scene;
}

谁能说出这里的错误是什么?任何有用的帮助都将得到赞赏。

1 个答案:

答案 0 :(得分:0)

您的代码存在一些问题:

  1. unregisterUpdateHandler更改为registerUpdateHandler
  2. 您的CameraSprite可能/应该是从它们使用的方法引用的全局变量。
  3. Player更改为player(这只是一项惯例,但有助于遵循)。
  4. 当您初始化player时,前两个参数的位置不是大小 - 这样可以省去必须对setPosition()进行额外方法调用。
  5. BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/");的开头写下onCreateResources(),然后将"gfx/face_box.png"更改为"face_box.png"
  6. 1,2和4非常重要,3和5是可选的,但我建议他们简化一些事情。

    这是否解决了这个问题?