AndEngine - 场景中所有textureRegion的一个textureAtlas;可能?

时间:2013-06-07 15:37:39

标签: android andengine

我注意到我可以为一个textureRegion保留一个地图册,尽管我可以多次绘制相同的区域作为精灵。是否可以将所有textureRegions保留在场景中的一个textureAtlas中?

我的特例是,我正在生成图像而不是使用任何图像文件。我使用BaseBitmapTextureAtlasSourceDecorator执行此操作,并从IBitmapTextureAtlasSource生成区域。

1 个答案:

答案 0 :(得分:3)

是。但是,一般情况下,您应该只创建最大宽度/高度为1024的地图集(顺便说一下,这些尺寸必须是2的幂)才有效。

另一方面,我发现使用BuildableBitmapTextureAtlas更容易。使用这种图集,您不必指定要放置纹理的图集中的位置。我认为它也可能在某种程度上照顾精灵出血(虽然不确定)。真的是同样的想法......这是我项目中的一个例子:

BuildableBitmapTextureAtlas buttonAtlas = new BuildableBitmapTextureAtlas(getTextureManager(), 512, 512, TextureOptions.BILINEAR_PREMULTIPLYALPHA); 
model.moveLeftButtonTR = BitmapTextureAtlasTextureRegionFactory.createFromAsset(buttonAtlas, this, "moveleft_button.png");
model.moveRightButtonTR = BitmapTextureAtlasTextureRegionFactory.createFromAsset(buttonAtlas, this, "moveright_button.png");
model.handleBlockButtonTR = BitmapTextureAtlasTextureRegionFactory.createFromAsset(buttonAtlas, this, "handleblock_button.png");
model.restartButtonTR = BitmapTextureAtlasTextureRegionFactory.createFromAsset(buttonAtlas, this, "restart_button.png");

try{ buttonAtlas.build(new BlackPawnTextureAtlasBuilder<IBitmapTextureAtlasSource, BitmapTextureAtlas>(0, 1, 1)); }
catch(Exception e){ e.printStackTrace(); }
buttonAtlas.load();

在您的情况下,请使用以下方法:

BitmapTextureAtlasTextureRegionFactory.createFromSource(BuildableBitmapTextureAtlas atlas, IBitmapTextureAtlasSource source)

总之,地图集只包含您添加的所有纹理。然后将此图集加载到内存中,以便可以快速检索这些纹理。然后,您可以使用纹理的单个实例来构建任意数量的独立精灵。