关于CCTMXTiledMap不支持读取polyline的问题

由于CCTMXTiledMap 不支持读取polyline 需要修改引擎代码 CCTMXXMLPaerser.cpp(CCTMXMapInfo类中)CCTMXMapInfo::startElement函数

 将

else if (elementName == "polyline")
    {
        // find parent object's dict and add polyline-points to it
        // CCTMXObjectGroup* objectGroup = (CCTMXObjectGroup*)m_pObjectGroups->lastObject();
        // CCDictionary* dict = (CCDictionary*)objectGroup->getObjects()->lastObject();
        // TODO: dict->setObject:[attributeDict objectForKey:@"points"] forKey:@"polylinePoints"];
    }

修改为

else if (elementName == "polyline")
    {
        // find parent object's dict and add polyline-points to it
        CCTMXObjectGroup* objectGroup = (CCTMXObjectGroup*)m_pObjectGroups->lastObject();
        CCDictionary* dict = (CCDictionary*)objectGroup->getObjects()->lastObject();
        // TODO: dict->setObject:[attributeDict objectForKey:@"points"] forKey:@"polylinePoints"];
        CCString* obj = new CCString(valueForKey("points", attributeDict));
        dict->setObject(obj, "polylinePoints");
        obj->autorelease();
    }


调用为

CCTMXTiledMap *map=CCTMXTiledMap::create("test.tmx");
this->addChild(map);
CCTMXObjectGroup *objGroup = map->objectGroupNamed("obj");
CCDictionary *road=objGroup->objectNamed("road");
CCString* points = (CCString*)road->objectForKey("polylinePoints");


注:TMX文件里存的Y坐标是相对于左上角为原点的,而Cocos2d-x采用的是以左下角为原点的,所以CCTMXTiledMap取出来的Y坐标跟TMX文件中的Y坐标不一样

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值