【问题标题】:How can I put some sprite into Valuemap in cocos2dx v3.7如何在 cocos2dx v3.7 中将一些精灵放入 Valuemap
【发布时间】:2015-09-07 08:53:23
【问题描述】:

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

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

我得到它时出错:

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

它显示错误“cocos2d::Value 不是指针”

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

【问题讨论】:

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


    【解决方案1】:

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

    我所知道的唯一存储 cocos2d::Ref 派生对象的内置 cocos 类型是 cocos2d::Vector - 它将正确保留/释放成员,并支持迭代。


    啊。 @zszen 指出我错过了 cocos2d::Map(来自 cocos/base/CCMap.h),它将保留/释放 Value 类型。

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

    【讨论】:

    • cocos2d::Vector 和 cocos2d::Map 有自动释放操作
    • 我认为 "cocos2d::Map<:string>" 在 cocos2dx 引擎中可以做任何事情。然后为存储价值数据创建一个 RefPlus。我们可以放一个津贴参数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-09
    相关资源
    最近更新 更多