FastTmx的ContentSize问题

最近在做一款斜45度游戏
采用非交错的tmx格式
在将触摸坐标转化为tmx地图坐标时死活算不对
跟踪发现原来是fastTMX的ContentSize计算有问题
导致进行坐标转换时无法获得正确的坐标,进而无法计算出所在位置

具体代码如下

`
typedef cocos2d::experimental::TMXTiledMap FastTmxTiledMap;
//使用fasttmx
tmxMap = FastTmxTiledMap::create(“test.tmx”);

CCLOG( “%f %f %f %f %f %f” , tmxMap->getContentSize().width , tmxMap->getContentSize().height ,
tmxMap->getMapSize().width , tmxMap->getMapSize().height ,
tmxMap->getTileSize().width, tmxMap->getTileSize().height);

最后输出结果为
720.000000 240.000000 6.000000 4.000000 96.000000 48.000000

`
如上所示
斜45度的地图,宽6,高4,地图格宽高为96和48
计算的结果居然为720和240

跟踪发现
在CCFastTMXLayer.cpp 第98行
this->setContentSize(CC_SIZE_PIXELS_TO_POINTS(Size(_layerSize.width * _mapTileSize.width, _layerSize.height * _mapTileSize.height)));

地图Layer的ContentSize被设置为 696 = 和448 即为 576和 192
再经过缩放处理
每个值都除以0.8
计算为 576/0.8 和192/0.8 结果是 720 和240
印证了我的想法

总结如下
FastTmx 在处理斜45度地图时,依然采用了横板的方式来计算尺寸
导致tmxMap和tmxLayer的尺寸错误
如果在用这个错误的尺寸进行坐标系转化
得出的结果也是错误
就无法计算正确结果了

+1 目前还是tilemap稳定一些