1

我已经使用 AndEngine 有一段时间了,并且已经设法让大多数事情正常工作,但是我在处理我的最新错误时遇到了一些困难。长话短说,我想在一个 BitmapTextureAtlas 上将一些图像组合在一起。

这些图像不能一开始就全部组合在一起,因为某些图像不会始终显示,并且每个图像还会根据用户输入进行自己的单独后期处理。然而,在完成所有这些输入之后,将这些图像组合到一个纹理上并且只有一个精灵来显示所有它们(大约六层左右)会使事情变得更容易,并略微提高性能。

我一直在尝试通过执行类似于以下的操作来做到这一点:

    this.mBitmapTextureAtlas = new BitmapTextureAtlas(512, 1024, TextureOptions.NEAREST_PREMULTIPLYALPHA);

    this.mFaceTextureRegion = BitmapTextureAtlasTextureRegionFactory.createFromAsset(mBitmapTextureAtlas, this, "layer1.png",0 ,0);
    this.mFaceTextureRegion2 = BitmapTextureAtlasTextureRegionFactory.createFromAsset(this.mBitmapTextureAtlas, this, "layer2.png",0 ,0);

这几乎可以工作,问题是(至少从我的角度来看)它覆盖了每个像素,所以只有最后添加的图层会显示出来。作为一个业余开发者,试图通过 AndEngine 来弄清楚我需要做些什么来让这个工作变得有点不知所措,所以我希望比我更有经验的人能给我一两个关于去哪里的提示管理这个。

当然,对于我的问题,我也愿意接受其他建议,这是我想出的解决方案,但我相信还有其他方法!

4

1 回答 1

1

您将无法通过一次又一次地写入纹理来做到这一点(正如您已经了解到的那样。)解决方案需要一些工作,但它完全有可能。

首先,您可以使用 android OS 将一组图像合成在一起。已经有 Stack Overflow 问题可以回答这个问题,其中用户提供代码来合并位图数组。

android:如何将一组位图合并到一个位图中?

然后您需要在 Andengine 中制作 TextureSource 以从位图而不是资源或资产创建区域。

来自 Drawable 的 AndEngine 纹理

最后,您可以将该 TextureRegion 传递给您的 Sprite。

(第 3 步:利润!)

于 2011-12-15T00:30:46.743 回答