AndEngine纹理很奇怪

时间:2013-03-18 19:25:32

标签: android textures andengine

Strange Error

有谁知道为什么会这样?

加载图片的代码:

 gameOverAtlas = new BuildableBitmapTextureAtlas(
                activity.getTextureManager(), 1024, 1024,
                TextureOptions.DEFAULT);

deathScreen1 = BitmapTextureAtlasTextureRegionFactory
                .createFromAsset(gameOverAtlas, activity,
                        "deathscreen1.png");

engine.getTextureManager().loadTexture(
            this.gameOverAtlas);
    engine.getTextureManager().loadTexture(
            this.mAutoParallaxBackgroundTexture);
    engine.getTextureManager().loadTexture(
            this.gameOverAtlas);

    try {
        this.gameTextureAtlas
                .build(new BlackPawnTextureAtlasBuilder<IBitmapTextureAtlasSource, BitmapTextureAtlas>(
                        0, 1, 0));
        this.gameTextureAtlas.load();

        this.gameOverAtlas
                .build(new BlackPawnTextureAtlasBuilder<IBitmapTextureAtlasSource, BitmapTextureAtlas>(
                        0, 1, 0));
        this.gameOverAtlas.load();

        this.playerAtlas
                .build(new BlackPawnTextureAtlasBuilder<IBitmapTextureAtlasSource, BitmapTextureAtlas>(
                        0, 1, 0));
        this.playerAtlas.load();

    } catch (final TextureAtlasBuilderException e) {
        Debug.e(e);
    }
}

然后附上精灵:

gameOverScreen =  new Sprite(0, 0, 650, 400, ResourceManager.getInstance().deathScreen1,vbom);

    attachChild(gameOverScreen);    

我收到此错误: enter image description here

2 个答案:

答案 0 :(得分:0)

在构建纹理图集之前,您似乎正在调用loadTexture。

举:

engine.getTextureManager().loadTexture(
        this.gameOverAtlas);
engine.getTextureManager().loadTexture(
        this.mAutoParallaxBackgroundTexture);
engine.getTextureManager().loadTexture(
        this.gameOverAtlas);
在try / Catch块之后

此外,如果您的纹理与TextureAltas的尺寸相同,除非您将填充和间距参数设置为0,否则它将失败。

另外,如果您制作的纹理图集只包含一个纹理区域,则无需使用可构建的纹理图集。

BuildableTexture地图集的特殊之处在于它将适合您的许多区域进入地图集,这意味着您不需要使用像TexturePacker这样的程序和纹理的texturePacker扩展程序。

答案 1 :(得分:0)

由于它的可构建纹理,而不是正常纹理,你用不同的方式加载它

try
{           
    gameTexture.build(new BlackPawnTextureAtlasBuilder<IBitmapTextureAtlasSource, BitmapTextureAtlas>(0, 0, 1));
    gameTexture.load();
}
catch (TextureAtlasBuilderException e)
{
    Debug.e(e);
}

请记住最后3个参数,你可以控制填充等。