【amazing cocos2d-x 3.0之七】数据结构Vector
来源:互联网 发布:mac电源适配器灯不亮 编辑:程序博客网 时间:2024/06/05 20:11
1. 简介
值得注意的是,在v3.0 beta版本中加入了数据结构Vector。定义在“COCOS2DX_ROOT/cocos/base”的"CCVector.h"头文件中。
template<class T>class CC_DLL Vector;cocos2d::Vector<T>是一个封装好的能动态增长顺序访问的容器。在cocos2d-x v3.0 beta之前,使用的是另外一个顺序访问容器cocos2d::CCArray,不过它将被废弃。将采用cocos2d::Vector<T>来替代cocos2d::CCArray,所以在后续的使用中,应该优先考虑使用cocos2d::Vector<T>。
2. 基本使用
(1)创建容器
先创建两个精灵
auto sp1=Sprite::create("CloseNormal.png");sp1->setPosition(Point(50,50));this->addChild(sp1);auto sp2=Sprite::create("CloseSelected.png");sp2->setPosition(Point(50,100));this->addChild(sp2);创建容器
Alpha: auto sp_array=Array::create();beta: Vector<Sprite*> sp_vec;
(2)将创建好的精灵添加进容器中
Alpha: sp_array->addObject(sp1); sp_array->addObject(sp2);beta: sp_vec.pushBack(sp1); sp_vec.pushBack(sp2);
(3)获得容器的大小
Alpha: int count=sp_array->count();beta: int count=sp_vec.size();
(4)获得容器中的精灵,并让这些元素都做统一的动作
Alpha: for(int i=0;i<sp_array->count();i++) { auto sp=(Sprite*)sp_array->getObjectAtIndex(i); sp->runAction(MoveTo::crate(0.2f,Point(200,200))); }beta: for( auto& e : sp_vec) { e->runAction(MoveTo::create(0.2f,Point(200,200)));//这种for写法是C++ 11的新特性 }
(5)删除容器中的精灵
//如果是要删除容器中最后一个精灵:Alpha: sp_array->removeLastObject();beta: sp_vec.popBack();//如果是直接删除对象Alpha: sp_array->removeObject(sp1);beta: sp_vec.eraseObject(sp1);//如果是删除容器中全部的对象Alpha: sp_array->removeAllObject();beta: sp_vec.clear();
(6)其他情况
//a 在容器中的任何一个位置插入对象:sp_vec.pushBack(sp1);sp_vec.pushBack(sp2);//目前得到的情况是,sp1在容器的第一个位置,sp2在容器的第二个位置,这时候我们要将sp3放入第一个位置:sp_vec.insert(0,sp3);//b 查找容器中的对象://1、假设不知道容器中是否有sp3这个精灵,这时候可以这样:sp_vec.contains(sp3);//如果有,返回true;如果没有,返回false//2、已知容器中有sp3这个精灵,想获得它在容器中的位置:int pos_int=sp_vec.find(sp3);//上面的方法可以获得sp3的位置,但返回的其实是迭代器的地址,你得到的结果可能是45214等等,如果想获得正常需要的位置,可以这样:int pos_int=sp_vec.find(sp3)-sp_vec.begin();
此篇文章的素材来自官网和天涯海阁,感谢一下。
0 0
- 【amazing cocos2d-x 3.0之七】数据结构Vector
- 【amazing cocos2d-x 3.0之八】数据结构Map
- 【amazing cocos2d-x 3.0之二】一些小变化
- 【amazing cocos2d-x 3.0之五】新的触摸机制
- 【amazing cocos2d-x 3.0之六】事件分发机制
- 【amazing cocos2d-x 3.0之十一】制作各种按钮
- 【amazing cocos2d-x 3.0之十八】错误集锦
- 【amazing cocos2d-x 3.0之二十一】cocos2d-x 3.0 beta2版本创建项目
- 【amazing cocos2d-x 3.0之二十二】cocos2d-x 3.0正式版创建项目
- cocos2d-x 3.0 数据结构 (1/3) cocos2d::Vector
- Cocos2d-x 3.0数据结构——cocos2d::Vector
- 【amazing cocos2d-x 3.0之二十】游戏存档之CCUserDefault,XML
- 【amazing cocos2d-x 3.0之四】新触摸机制的前奏——Lambda
- 【amazing cocos2d-x 3.0之三】事件回调函数的变化
- 【amazing cocos2d-x 3.0之九】Tiled Map(瓦片地图)
- 【amazing cocos2d-x 3.0之十】使用touch事件来拖拽精灵
- 【amazing cocos2d-x 3.0之十二】使用物理引擎完成弹球
- 【amazing cocos2d-x 3.0之十四】内存管理(2):纹理缓存(Texture Cache)
- META标签用法
- ios搜索栏的设置及搜索栏的背景图的设置
- 第六周——静态成员应用
- 视图的创建
- HTML5 CSS3网站在老IE中也能浏览的方法
- 【amazing cocos2d-x 3.0之七】数据结构Vector
- thttpd: unknown user - 'www'
- 唐慧之女被迫卖淫案:老板警校出身 警察是嫖客?
- java程序员快速学c++
- ASP实现远程抓取网页到本地数据库
- 大数据时代你不得不了解的大数据处理工具
- Password management in Django 密码管理,记忆线索
- 驱动人生2014 v6.0.9.70 绿色版
- 多线程中的数据结构使用