c++ - Cocos2dX deprecated classes 问题

标签 c++ cocos2d-x

我正在尝试将我的代码从 cocos2d-X 版本 2.X 更新到版本 3.X。虽然更新时面临一些不推荐使用的方法的问题。我发现 ValueVector 是 CCArray 的替代品。下面是我的代码。

             CCArray *array = CCArray::create();

             CCArray *arra1 = CCArray::create();
             std::string winLine4[] = {"a", "b", "c", "d"};
             for (int i = 0; i < 4; i++) {
                  arra1->addObject(CCStringMake(winLine4[i]));
             }
             array->->addObject(arra1);

             CCArray *arra2 = CCArray::create();
             std::string winLine4[] = {"aa", "bb", "cc", "dd"};
             for (int i = 0; i < 4; i++) {
                  arra2->addObject(CCStringMake(winLine4[i]));
             }
             array->->addObject(arra2);

我尝试使用值映射和值 vector ,但出现了很多类型转换问题。请帮助我

最佳答案

Value/ValueVector/ValueMap 适用于 JSON 或 PLIST 数据,因此如果您仅使用数字、字符串和其他 vector 或字典。使用您的示例是相似的,但是您将类型包装在 Value() 中,稍后使用 asString()、asInt()、asValueMap() 等读取/解析。

ValueVector arr;
ValueVector arr1;
ValueVector arr2;

std::string winLine4[] = {"a", "b", "c", "d"};
for (int i = 0; i < 4; i++) {
    arr1.push_back(Value(winLine4[i]));
}
arr.push_back(Value(arr1));

std::string winLine4[] = {"aa", "bb", "cc", "dd"};
for (int i = 0; i < 4; i++) {
    arr2.push_back(Value(winLine4[i]));
}
arr.push_back(Value(arr2));

稍后访问容器中的值。

Value v = arr.at(3);
string line = v.asString();
// get each Value inside vector
for(auto v : arr) {
   auto line = v.asString();
}

使用 valueMap(即:字典)

// create 
ValueMap dict;
dict["an_int"] = Value(3);
dict["a_string"] = Value("test string");
dict["a_float_in_string"] = Value("3.4");

// access 
int v1 = dict["an_int"].asInt();
std::string v2 = dict["a_string"].asString();
int v3 = dict["a_float_in_string"].asInt();
// you may want to check if key exists
Value v4 = dict["not_a_key"];
// v4.isNull() will be true

关于c++ - Cocos2dX deprecated classes 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29775288/

相关文章:

ios - 从 cocos2d-x 代码调用原生 ObjC 类

c++ - COCOS 2dx无法获取touches?

cocos2d-x - 更改播放器动画时出错

c++ - 类上的行外定义错误,但它在头文件中声明

c++ - 类中的while循环不会执行c++

c# - 从哪里开始使用 C# 或任何语言中的神经网络进行手写文本识别

c++ - C++ 中附加的 char* 的奇怪输出

c++ - 处理 PVP 游戏中的延迟问题

c++ - 生成的代码中带有新行的 C 宏

c++ - 使用 ReadDirectoryChangesW 时崩溃