Cocos2d: 错误不存在从 Cocos2d::Valuemap 到 Cocos2d::CCdictionary 的合适的转换函数

Cocos2d: error no suitable conversion function from Cocos2d::Valuemap to Cocos2d::CCdictionary existis

我正在学习这个关于在我的游戏中实现 tilemaps 的精彩教程 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->objectNamed("SpawnPoint");

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

这看起来像是使用的不同 cocos 版本的问题(教程是 v2,我是 v3)。

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

CCDictionary 现在是 ValueMap。所以只需将其更改为ValueMap。然后就可以这样使用了:

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

更容易做到。

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

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

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