cocos2d-x学习笔记(5)Value和vector
2015-11-18 17:56
417 查看
Value
Value的所有构造函数:
在创建Value时,往构造函数里传入一个值,Value就会自动根据这个值来决定自己的类型。在获取Value的值时调用as**函数来获取:
Vector,实际上它封装了C++的vector容器类。
size():返回Vector存放的对象个数;
at(index):返回Vector某个对象,index为下标值;
front():返回Vector的第一个对象,也就是最先加到Vector的对象;
back():返回Vector的最后一个对象;
pushBack(object):在Vector的最后添加一个object对象;
eraseObject(object):从Vector中删除object对象;
erase(index):从Vector中删除下标在index处的对象;
clear();清空Vector,也就是删除所用对象。
Map:
Vector和Map的区别:
Vector保存对象默认是按顺序的,从中获取对象时只能通过下标的方式。而Map保存对象是没有顺序的,它只是保存了key值和value值的对应关系,获取对象事,只需要提供key值就可以。而且Map的key值可以是任何类型,不一定是int型。
Value的所有构造函数:
Value(); /** Create a Value by an unsigned char value. */ explicit Value(unsigned char v); /** Create a Value by an integer value. */ explicit Value(int v); /** Create a Value by a float value. */ explicit Value(float v); /** Create a Value by a double value. */ explicit Value(double v); /** Create a Value by a bool value. */ explicit Value(bool v); /** Create a Value by a char pointer. It will copy the chars internally. */ explicit Value(const char* v); /** Create a Value by a string. */ explicit Value(const std::string& v); /** Create a Value by a ValueVector object. */ explicit Value(const ValueVector& v); /** Create a Value by a ValueVector object. It will use std::move internally. */ explicit Value(ValueVector&& v); /** Create a Value by a ValueMap object. */ explicit Value(const ValueMap& v); /** Create a Value by a ValueMap object. It will use std::move internally. */ explicit Value(ValueMap&& v); /** Create a Value by a ValueMapIntKey object. */ explicit Value(const ValueMapIntKey& v); /** Create a Value by a ValueMapIntKey object. It will use std::move internally. */ explicit Value(ValueMapIntKey&& v);
在创建Value时,往构造函数里传入一个值,Value就会自动根据这个值来决定自己的类型。在获取Value的值时调用as**函数来获取:
Value valStr = Value("XiaoRuo is "); Value valInt = Value(250); log("%s%d", valStr.asString().c_str(), valInt.asInt());
Vector,实际上它封装了C++的vector容器类。
Label* label1 = Label::create("XiaoRuoNo.1", "Arial", 30); label1->setPosition(Point(250, 400)); Label* label2 = Label::create("XiaoRuoNo.2", "Arial", 30); label2->setPosition(Point(250, 200)); // 创建Vector对象 Vector<Label*> vec; // 把2个Label存放到Vector中 vec.pushBack(label1); vec.pushBack(label2); // 遍历Vector,取出所有Label,添加到场景 for (auto lab : vec) { this->addChild(lab); }Vector的一些常用函数:
size():返回Vector存放的对象个数;
at(index):返回Vector某个对象,index为下标值;
front():返回Vector的第一个对象,也就是最先加到Vector的对象;
back():返回Vector的最后一个对象;
pushBack(object):在Vector的最后添加一个object对象;
eraseObject(object):从Vector中删除object对象;
erase(index):从Vector中删除下标在index处的对象;
clear();清空Vector,也就是删除所用对象。
Map:
Map<int, Label*> xiaoRuoMap; // 创建100个小若,并保存到Map中 for (int i = 1; i <= 100; i++) { // 组合小若的名字 std::string name = "XiaorRuoNo." + Value(i).asString(); // 创建Label对象,代表小若 Label* lab = Label::create(name.c_str(), "Arial", 30); // 保存小若Label到Map中,用i作为key,用lab作为value xiaoRuoMap.insert(i, lab); } // 今天约了No.23的小若,我们把她约出来 Label* xiaoRuoLab = xiaoRuoMap.at(23); xiaoRuoLab->setPosition(Point(200, 200)); this->addChild(xiaoRuoLab); return true;
Vector和Map的区别:
Vector保存对象默认是按顺序的,从中获取对象时只能通过下标的方式。而Map保存对象是没有顺序的,它只是保存了key值和value值的对应关系,获取对象事,只需要提供key值就可以。而且Map的key值可以是任何类型,不一定是int型。
相关文章推荐
- Cocos2dx-OpenGL ES2.0教程:纹理贴图(6)
- (转载)Cocos2dx-OpenGL ES2.0教程:纹理贴图(6)
- cocos2d-x v3.9 与MoveBy和MoveTo之间的对话
- quick-cocos2d-x 3.3 gradle eclipse 打包
- Cocos2dx-OpenGL ES2.0教程:你的第一个立方体(5)
- (转载)Cocos2dx-OpenGL ES2.0教程:你的第一个立方体(5)
- 九、cocos2d-x一些实用的代码片段
- Cocos2D-X中在C++中调用JAVA的方法
- Cocos2dx-OpenGL ES2.0教程:使用VBO索引(4)
- (转载)Cocos2dx-OpenGL ES2.0教程:使用VBO索引(4)
- Cocos2dx-OpenGL ES2.0教程:初识MVP(3)
- (转载)Cocos2dx-OpenGL ES2.0教程:初识MVP(3)
- cocos 2d-x 3.0环境配置
- cocos 2d-x 3.0配制环境
- cocos2dx中protobuf的lua使用
- Windows7下使用Eclipse搭建Cocos2dx+Android开发环境
- cocos2d 一个坑爹的内存泄露
- Cocos2dx-OpenGL ES2.0教程:编写自己的shader(2)
- (转载)Cocos2dx-OpenGL ES2.0教程:编写自己的shader(2)
- cocos2d js 编译jsc 报错this._super is not a function