我似乎无法像我期望的那样让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)!
如果你有一堆精灵使用相同的纹理但显示不同的瓷砖,那么应该怎么做?
答案 0 :(得分:2)
我认为在创建Sprite时需要使用deepCopy()纹理,比如
foo2 = new TiledSprite(0, 200, mBlockTexture.deepCopy());