如何在 cocos2dx v3.7 中将一些精灵放入 Valuemap

How can I put some sprite into Valuemap in cocos2dx v3.7

我发现Valuemap是方法。该值不支持指针。 但是我写那些代码没有报错:

Sprite* spriteBg = .....;
Valuemap dic;
dic["abc"] = spriteBg;

获取时出错:

for (auto unit:dic){
  Sprite* spritebg = dynamic_cast<Sprite*>(unit.second);
}

它告诉我错误 "cocos2d::Value is not a pointer"

或这个问题的另一面: 我可以将 Ref 对象设置为 cocos2dx 值吗?

cocos2d::Value 类型以及扩展值映射类型旨在保存从 JSON 反序列化的值。因此它们不能包含 Ref 类型。

据我所知,唯一内置的 cocos 存储 cocos2d::Ref 派生对象的类型是 cocos2d::Vector - 它将 retain/release 正确加入成员,并支持迭代。


啊。 @zszen 指出我错过了 cocos2d::Map(来自 cocos/base/CCMap.h),它将 retain/release 值类型。

cocos2d::Map<std::string,Node*> nodeMap;