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

时间:2015-10-06 23:10:20

标签: c++ cocos2d-x cocos2d-x-3.0

我正在关注这个关于在我的游戏中实现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 existsis)

这看起来像是来自不同的cocos'使用的版本(教程是v2和我' m v3)。

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

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

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

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

更容易做到。