TiledSprite没有按预期工作

时间:2012-03-15 08:29:57

标签: android andengine

我似乎无法像我期望的那样让TiledSprite工作。没有手册,AndEngineExamples中的示例没有帮助。

考虑以下代码:

@Override
public void onLoadResources() {
  BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/");
  mBlockAtlas = new BitmapTextureAtlas(512, 512, TextureOptions.BILINEAR_PREMULTIPLYALPHA);
  mBlockTexture = BitmapTextureAtlasTextureRegionFactory.createTiledFromAsset(mBlockAtlas, getApplicationContext(), "num_plasma.png", 0, 0, 3, 3);

  getTextureManager().loadTexture(mBlockAtlas);
}

这会加载512x512纹理,我手动将其划分为3x3图块,仅用于测试目的。现在,这样做:

public Scene onLoadScene() {
  mScene = new Scene();
  mScene.setBackground(new ColorBackground(0.5f, 0.1f, 0.6f));

  TiledSprite foo, foo2;
  foo = new TiledSprite(0, 0, mBlockTexture);
  foo.setCurrentTileIndex(1);
  foo2 = new TiledSprite(0, 200, mBlockTexture);
  foo2.setCurrentTileIndex(5);
  mScene.attachChild(foo);
  mScene.attachChild(foo2);

  return mScene;
}

这会在屏幕上显示两个精灵(正如预期的那样),但它们都显示相同的拼贴(5)!

如果你有一堆精灵使用相同的纹理但显示不同的瓷砖,那么应该怎么做?

Screenshot of error

1 个答案:

答案 0 :(得分:2)

我认为在创建Sprite时需要使用deepCopy()纹理,比如

foo2 = new TiledSprite(0, 200, mBlockTexture.deepCopy());