如何删除 AndEngine 中的上一级实体?

How to remove previous level entities in AndEngine?

在我的游戏中,我有 6 个关卡,任何关卡都有一个 XML 文件...我有一个关于结束关卡的问题...当玩家碰撞到精灵时(它在结束关卡) 我想加载下一个级别但是在加载下一个级别时在代码下,显示了两个级别的实体...如何删除上一个级别的实体?

XML 文件

<level width="10000" height="1000" background="back1">  
<entity x="100" y="100" type="sp"/>
<entity x="230" y="100" type="fa"/>
<entity x="440" y="190" type="su"/>
<entity x="660" y="240" type="sp"/>
...
<entity x="415" y="340" type="coin1"/>
<entity x="465" y="340" type="coin1"/>
<entity x="805" y="360" type="coin2"/>
<entity x="60" y="140" type="player"/>
<entity x="6000" y="360" type="levelEnd"/>
</level>

游戏场景

public void loadLevel(int levelID) {
levelLoader.registerEntityLoader(new EntityLoader<SimpleLevelEntityLoaderData>(
                    TAG_ENTITY) {
                public IEntity onLoadEntity( final String pEntityName,
                        final IEntity pParent,
                        final Attributes pAttributes,
                        final SimpleLevelEntityLoaderData  pSimpleLevelEntityLoaderData)
                        throws IOException {
                    final int x = SAXUtils.getIntAttributeOrThrow(
                            pAttributes, TAG_ENTITY_ATTRIBUTE_X);
                    final int y = SAXUtils.getIntAttributeOrThrow(
                            pAttributes, TAG_ENTITY_ATTRIBUTE_Y);
                    final String type = SAXUtils.getAttributeOrThrow(
                            pAttributes, TAG_ENTITY_ATTRIBUTE_TYPE);

                    final Sprite levelObject;
                    if (type.equals(TAG_ENTITY_ATTRIBUTE_TYPE_VALUE_LEVEL_END)) {
                        levelObject = new Sprite(x, y,
                                resourceManager.game_end_region, vbom) {
                            @Override
                            protected void onManagedUpdate(
                                    float pSecondsElapsed) {
                                super.onManagedUpdate(pSecondsElapsed);

                                if (player.collidesWith(this)) {

                                    swipeScene();
                                }
                            }
                        };
                        levelObject.registerEntityModifier(new LoopEntityModifier(
                                        new ScaleModifier(1, 1, 1.3f)));
                    }
}

滑动场景:

    public void swipeScene() {
    resourceManager.mMusic1.stop();
    createHUD();
    createPhysics();
    resourceManager.loadGameResources();
    loadLevel(SceneManager.getInstance().levelN + 1);
    setOnSceneTouchListener(this);
}

本回答是关于在AndEngine中释放资源的:

您可以通过以下方式释放资源:

删除纹理:

this.service.getTextureManager().unloadTexture(texturename); 
texturename.unload();

参考:http://www.appsrox.com/android/tutorials/flappychick/3/

删除实体:

yourEntity.detachSelf();
yourEntity.dispose();

参考:http://www.matim-dev.com/how-to-safely-remove-sprite.html