Cocos2d: error不存在从Cocos2d::Valuemap到Cocos2d::CCdictionary的合适

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

本文关键字:Cocos2d CCdictionary Valuemap error 不存在      更新时间:2023-10-16

我正在遵循这个关于在我的游戏中执行tilemap的神奇教程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)。

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

为什么不使用自动指针,并使用正常的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();

做起来容易多了