使用属性计算切片,结果为0

时间:2014-05-03 14:20:04

标签: android andengine

我正在尝试使用墙属性为真计算图层中的图块。 在我的TMX文件中,我已经设置了属性,所以我确信它就在那里,你可以在这里看到:

TMX XML:

<?xml version="1.0" encoding="UTF-8"?>
<map version="1.0" orientation="orthogonal" width="212" height="20" tilewidth="16"   
tileheight="16">
 <tileset firstgid="1" name="tileSet-hd" tilewidth="16" tileheight="16">
 <image source="gfx/tile_set.png" trans="fe80fe" width="256" height="256"/>
 </tileset>
<layer name="background" width="212" height="20">
<data encoding="base64" compression="zlib">

  </data>
 </layer>
 <layer name="walls" width="212" height="20">
  <properties>
   <property name="wall" value="true"/>
  </properties>
  <data encoding="base64" compression="zlib">

  </data>
 </layer>
 <layer name="hazards" width="212" height="20">
  <data encoding="base64" compression="zlib">

  </data>
 </layer>
</map>

CODE:

 try {
 final TMXLoader tmxLoader = new TMXLoader(activity.getAssets(),
                activity.getTextureManager(),
                TextureOptions.BILINEAR_PREMULTIPLYALPHA,
                engine.getVertexBufferObjectManager(),
                new ITMXTilePropertiesListener() {
                    @Override
                    public void onTMXTileWithPropertiesCreated(
                            final TMXTiledMap pTMXTiledMap,
                            final TMXLayer pTMXLayer,
                            final TMXTile pTMXTile,
                            final 
TMXProperties<TMXTileProperty> pTMXTileProperties) {

if 
(pTMXTileProperties.containsTMXProperty("wall","true")) {
mTilesCount++;
}

}
});
        this.mTMXTiledMap = tmxLoader.loadFromAsset("gfx/level1.tmx");
        Log.d("aaaaaa", "tiles count: " + mTilesCount);
    } catch (final TMXLoadException e) {
        Debug.e(e);
    }

    final TMXLayer tmxLayerBcg = this.mTMXTiledMap.getTMXLayers().get(0);
    final TMXLayer tmxLayerWalls = this.mTMXTiledMap.getTMXLayers().get(1);
    final TMXLayer tmxLayerTraps = this.mTMXTiledMap.getTMXLayers().get(2);
    gameScene.attachChild(tmxLayerBcg);
    gameScene.attachChild(tmxLayerWalls);
    gameScene.attachChild(tmxLayerTraps);
    // end of loading TMX

在结论中,我想创建一个我的玩家可以踩在墙上的瓷砖。但我甚至无法摆脱这个问题。 日志始终显示tile计数:0。但是,如果存在名称为wall且value为true的属性,则为什么。

我受到一些教程的指导并使用了这些示例:

This code

Properties in TMX

1 个答案:

答案 0 :(得分:1)

您必须在对象图层中的平铺编辑器中创建对象。然后用Java绘制对象,将它们设置为不可见,这样就可以看到背景。