android - 更改 andengine 中的 tmx 磁贴

标签 android performance tmx

我一直在使用this technique更改游戏中的图 block ,但我注意到,当同时更改许多图 block 时,性能会出现相当大的损失。我正在使用该技术对 TMX map 上的图 block 进行动画处理。我想知道是否有其他人注意到使用该方法更改 tmx 磁贴有任何性能问题?有没有更有效的方法来改变 TMX Tiles?

为了解决性能损失,我能想到的唯一其他选择是将动画 Sprite 附加到 TMX 层,但这似乎不是一个理想的解决方案。

如有任何建议,我们将不胜感激。

下面是我引用的方法:

 mTestTile.setGlobalTileID(mTMXTiledMap, mGloabalIndex);

 //After changing the global ID do this       
 final int TileHeight = mTMXTiledMap.getTileHeight();
 final int TileWidth = mTMXTiledMap.getTileWidth();           
 //See TMXLayer Class line 308 (getSpriteBatchIndex)
 lTMXLayer.setIndex(mTestTile.getTileRow() * mTMXTiledMap.getTileColumns() + mTestTile.getTileColumn());
lTMXLayer.drawWithoutChecks(mTestTile.getTextureRegion(), mTestTile.getTileX(),  mTestTile.getTileY(), lTileWidth, lTileHeight, Color.WHITE_ABGR_PACKED_FLOAT);     
mTMXTiledMap.mTestTMXLayer.submit();[/syntax]

注意:我正在使用 GLES2 Anchor_Center Branch

最佳答案

我不确定你是否可以使用这个,但我需要类似的东西。我的 TMX map 中几乎没有想要有两个帧(开/关)的对象。我没有使用 map 层,而是使用对象层。我已将此代码添加到 TMXTileset 类中:

public ITiledTextureRegion getTiledTextureRegionFromGlobalTileID(final int pGlobalTileID, final int pTiles) {
    ITextureRegion[] regions = new ITextureRegion[pTiles];
    for (int i = 0; i < pTiles; i++) {
        regions[i] = getTextureRegionFromGlobalTileID(pGlobalTileID + i);
    }

    return new TiledTextureRegion(this.mTexture, regions);
}

我将所有开/关对象放置到特殊对象层(使用平铺编辑器)。当然,必须组织图 block 集,以便开帧和关帧按顺序排列。

然后,当我创建 map 时,我会迭代这些对象并创建平铺 Sprite 。我将其保存到一个特殊列表中以供以后检索。当然,从一种模式切换到另一种模式就像使用 setCurrentTileIndex()

一样简单

关于android - 更改 andengine 中的 tmx 磁贴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15854772/

相关文章:

java - 如何在java中将 HashMap 从一个类传输到另一个类

javascript - 数组表示法或 .method() - 哪个更快?

java - 带有Android和Java的mysql中的印地语字体

java - Android:在应该向后兼容的 3.0 应用程序上崩溃

javascript - 在 javascript 中,访问 'window.Math' 比访问没有 'Math' 的 'window.' 对象慢还是快?

xml - 使用 NDK 和 SDL_RWops 无法从 android Assets 文件夹中读取 xml/tmx 文件

java - Libgdx getProperties().get ("value") 给我奇怪的回应

java - LibGDX + Eclipse |无法加载 .tmx () 文件

android - dom 解析器错误 : PI must not start with xml

android - Kotlin 中的异步匿名函数? ( lambda 表达式)