在Andengine中制作一个.png到一个textureRegion

Make a .png to a textureRegion in Andengine

我想将 png 制作成 textureRegions,经过一番搜索后我感到很困惑。有人说我必须使用纹理、其他人的 textureAtlas、其他人的 bitmapTextureAtlas 等等。 所以谁能告诉我该怎么做,从创建必须创建的内容,到让 textuReregion 在我需要的任何地方都可用。 我绝对混淆所以请详细说明!谢谢

纹理构造函数

a = new ITexture() {
            @Override
            public int getWidth() {
                return 0;
            }

            @Override
            public int getHeight() {
                return 0;
            }

            @Override
            public int getHardwareTextureID() {
                return 0;
            }

            @Override
            public boolean isLoadedToHardware() {
                return false;
            }

            @Override
            public void setNotLoadedToHardware() {

            }

            @Override
            public boolean isUpdateOnHardwareNeeded() {
                return false;
            }

            @Override
            public void setUpdateOnHardwareNeeded(boolean pUpdateOnHardwareNeeded) {

            }

            @Override
            public void load() {

            }

            @Override
            public void load(GLState pGLState) throws IOException {

            }

            @Override
            public void unload() {

            }

            @Override
            public void unload(GLState pGLState) {

            }

            @Override
            public void loadToHardware(GLState pGLState) throws IOException {

            }

            @Override
            public void unloadFromHardware(GLState pGLState) {

            }

            @Override
            public void reloadToHardware(GLState pGLState) throws IOException {

            }

            @Override
            public void bind(GLState pGLState) {

            }

            @Override
            public void bind(GLState pGLState, int pGLActiveTexture) {

            }

            @Override
            public PixelFormat getPixelFormat() {
                return null;
            }

            @Override
            public TextureOptions getTextureOptions() {
                return null;
            }

            @Override
            public boolean hasTextureStateListener() {
                return false;
            }

            @Override
            public ITextureStateListener getTextureStateListener() {
                return null;
            }

            @Override
            public void setTextureStateListener(ITextureStateListener pTextureStateListener) {

            }
        }

我不太清楚你的问题是什么,但如果你想加载你的.png图片,这是这样做的方法。

BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/");

AddTextureAtlas = new BitmapTextureAtlas(activity.getTextureManager(),
    256, 256, TextureOptions.BILINEAR);
Add_region = BitmapTextureAtlasTextureRegionFactory.createFromAsset(
    AddTextureAtlas, activity, "add.png", 0, 0);
AddTextureAtlas.load();

然后像这样附加它

Sprite mySprite = new Sprite(0, 0,
    ResourcesManager.getInstance().Add_region,
    ResourcesManager.getInstance().vbom);
attachChild(mySprite);

我正在使用单独的资源管理器 class 来加载纹理。其中 gfx 是 assets

中的一个文件夹

一步一步:

  1. 在您的项目 "assests" 文件夹中,您可以创建 "gfx" 文件夹。
  2. 将您的 example.png 图像放入 "gfx" 文件夹中。名称必须小写。
  3. 编码。最好有一些 ResourceManager class 和加载纹理的方法。假设您创建了一个。其中之一(即 loadExamplePNG():

    • BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/"); - 这会为您的图像设置默认文件夹(您不必使用它,但稍后您将不得不放置图像路径)

    • BitmapTextureAtlas exampleTextureAtlas = new BitmapTextureAtlas(activity.getTextureManager(), 256, 256); - 纹理图集就像一张 sheet 上面贴有贴纸的纸。你创建大图集来放置你的 images/textures 并将它们加载在一起。数字 256、256 表示您的地图集有多大。它们必须是二的幂(256、512、1024、2048)。有些手机不能超过 1024 x 1024。

    • ITextureRegion exampleTextureRegion = BitmapTextureAtlasTextureRegionFactory.createFromAsset( exampleTextureAtlas, activity, "example.png", 0, 0);- 这里我们把我们的图像放在图集上,就像纸上的贴纸一样。您选择图像 "example.png" 并将其放在 exampleTextureAtlas 的位置 (0, 0) 上。您可以在图集中放置多个区域,但您不能选择相同的坐标。因此,如果第一个区域位于位置 (0, 0) 并且它是 100x100 大 - 例如第二个图像必须位于位置 (110, 0) 以便它们不重叠。

    • exampleTextureAtlas.load(); - 最后我们加载我们的地图集。简单。

同样,正如@mayurN 指出的那样:如果将这段代码放在 resourceManager 的方法中(作为单例模式 class),您可以将其用作:

ResourceManager.getInstance().loadExamplePNG();