提问者:小点点

Cocos2d:错误没有合适的从Cocos2d::Valuemap到Cocos2d::CCdictionary的转换函数


我正在遵循这个关于在我的游戏 http://www.raywenderlich.com/39113/cocos2d-x-tile-map-tutorial-part-1 中实现瓦片地图的惊人教程

http://www.raywenderlich.com/40544/cocos2d-x-tile-map-tutorial-part-2

但当我说到这一点时:

CCTMXObjectGroup *objectGroup = _tileMap->objectGroupNamed("Objects");

if(objectGroup == NULL){
    CCLog("tile map has no objects object layer");
    return false;
}

CCDictionary *spawnPoint = objectGroup->objectNamed("SpawnPoint");

int x = ((CCString)*spawnPoint->valueForKey("x")).intValue();
int y = ((CCString)*spawnPoint->valueForKey("y")).intValue();

_player = new CCSprite();
_player->initWithFile("Player.png");
_player->setPosition(ccp(x,y));

this->addChild(_player);
this->setViewPointCenter(_player->getPosition());

我收到一个错误:CCDictionary *spawnPoint = objectGroup-

说明没有转换此objectGroup的函数。(错误:不存在从Cocos2d::Valuemap到Cocos2d::CCdictionary的适当转换函数)

这看起来像一个问题,从差异cocos的版本使用(本教程是v2和我是v3)。

有人知道如何解决这个问题吗?


共2个答案

匿名用户

为什么不使用自动指针,并使用普通C语法访问返回的无序映射。代码示例见下文。

auto spawnPoints = objectGroupd->objectNamed("SpawnPoint");
int x = spawnPoints.at("x").asInt();
int y = spawnPoints.at("y").asInt();

这将为您提供与raywenderlich教程期望您拥有的相同值。

匿名用户

CCDictionary现在是ValueMap。因此,只需将其更改为ValueMap即可。然后你可以像这样使用它:

int x = spawnPoint["x"].asInt();
int y = spawnPoint["y"].asInt();

做起来容易多了。