TiledSprite не работает должным образом - PullRequest
1 голос
/ 15 марта 2012

Я не могу заставить 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 Ответ

2 голосов
/ 15 марта 2012

Я думаю, что вам нужно DeepCopy () текстуры при создании спрайтов, как

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