0

第二次加载我的 andengine 活动时,我的精灵(它们本身是盒子,但颜色不同)都显示为黑盒子。这很奇怪,因为通常这个问题是由于纹理图集不够大,但我尝试将图集的大小加倍,但没有奏效。所以这里是相关的代码,任何帮助将不胜感激!

所以把它放在那里,第一次加载我的游戏时,一切都很好,很完美,但第二次,精灵出现黑色。

我见过其他问题,其中精灵显示为黑框,但对我来说,它们第一次加载很好,其他问题不会发生这种情况,其他问题给出的答案对我不起作用(他们是, atlas 需要是 2 的幂,atlas 不够大)

public void loadGameResources(){

    BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/");

    gameTextureAtlas = new BuildableBitmapTextureAtlas(activity.getTextureManager(), 512, 512, TextureOptions.BILINEAR);

    blackTile = BitmapTextureAtlasTextureRegionFactory.createFromAsset(gameTextureAtlas, activity, "blacktile.png");
    greyTile = BitmapTextureAtlasTextureRegionFactory.createFromAsset(gameTextureAtlas, activity, "greytile.png");
    redTile = BitmapTextureAtlasTextureRegionFactory.createFromAsset(gameTextureAtlas, activity, "redtile.png");
    greenTile = BitmapTextureAtlasTextureRegionFactory.createFromAsset(gameTextureAtlas, activity, "greentile.png");
    Log.d(gameTextureAtlas+"","didn'tignore");
    loadFont();

    try{
        Log.d("LOPOLL","arrived");
        gameTextureAtlas.build(new BlackPawnTextureAtlasBuilder<IBitmapTextureAtlasSource, BitmapTextureAtlas>(0, 1, 0));

        Log.d("boom","arrived");

        gameTextureAtlas.load();
        Log.d("gotHere","arrived");
    }catch(Exception e){
        Log.d("WrongPlace","arrived");
    }

}

(资源卸载方式)

public void unloadGameResources(){
    if(gameTextureAtlas !=null){
    gameTextureAtlas.unload();
    }
    gameTextureAtlas = null;

//      blackTile = null;
//      greyTile = null;
//      redTile = null;
//      greenTile = null;

    }

我评论给 tiletextures 一个空值的部分的原因是,这样做由于某种原因会产生一个空异常错误,即使我认为在重新加载活动时会重新分配纹理,因为重新加载活动调用 loadgameresources() 方法

4

1 回答 1

0

得到了答案,伙计们.. System.exit(code) 确保活动正确退出。失望的堆栈溢出无法回答这个问题!

于 2014-07-25T11:12:01.253 回答