先创建两个精灵:
auto sp1 = Sprite::create("CloseNormal.png"); sp1->setPosition(Point(100,100)); this->addChild(sp1,1); auto sp2 = Sprite::create("CloseSelected.png"); sp2->setPosition(Point(100,200)); this->addChild(sp2,1);
Alpha: auto sp_array = Array::create(); beta: Vector<Sprite*> sp_vec;
Alpha: sp_array->addObject(sp1); sp_array->addObject(sp2); beta: sp_vec.pushBack(sp1);//和 堆栈 一样一样的 sp_vec.pushBack(sp2);
Alpha: int count = sp_array->count(); beta: int count = sp_vec.size();
Alpha: for(int i=0;i<sp_array->count();i++) { auto sp = (Sprite*)sp_array->getObjectAtIndex(i); sp->runAction(MoveTo::create(0.2f,Point(100,100))); } beta: for(int i=0;i<sp_vec.size();i++) { auto sp = sp_vec.at(i); sp->runAction(MoveTo::create(0.2f,Point(100,100))); }
//如果是要删除容器中最后一个精灵的话: 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();
//a 在容器中的任何一个位置插入对象: sp_vec.pushBack(sp1); sp_vec.pushBack(sp2); //目前的情况是,sp1在容器的第一个位置,sp2在容器的第二个位置,这时候我们要将sp3放入第一个位置: sp_vec.insert(0,sp3);//ok //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();//ok
转载请声明原创地址:http://blog.csdn.net/start530?viewmode=contents
Cocos2dx 3.0 提高篇(八)浅谈Vector的使用
原文:http://blog.csdn.net/start530/article/details/19163435