Cocos2dx 3.0 过渡篇(九)浅谈容器Map
2014-04-15 17:11
316 查看
尊重原创,转载请注明来自:star特530的CSDN博客 http://blog.csdn.net/start530/article/details/19284301
本篇接着上一篇的容器继续唠叨,了解上一篇:http://blog.csdn.net/start530/article/details/19170853
既然Vector是对比Array,那么Map就对比Dictionary吧。
1、创建
[cpp] view
plaincopy
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);
[cpp] view
plaincopy
//创建容器
Alpha:
auto sp_dic = Dictionary::create();//创建一个字典
beta:
//建立一个关联容器map,第一个参数是string型的key,第二个参数是Sprite类的key值
Map<std::string,Sprite*>sp_map;
2、将对象放入到容器中
[cpp] view
plaincopy
Alpha:
sp_dic->setObject(sp1,"sp1");//将精灵放入字典中,第二个参数是精灵在字典中的key
sp_dic->setObject(sp2,"sp2");
beta:
sp_map.insert("sp1",sp1);//将精灵放入容器中,第一个参数是key
sp_map.insert("sp2",sp2);
3、取出容器中的元素
map是键-值对的集合。map类型通常可以理解为关联数组,Vector容器可以使用类似数组a[0],a[2]这种下标的方式获得容器内的元素,Map容器也是可以通过下标的方式获取,但下标是指元素特定的键,而不是通过在数组中的位置。
[cpp] view
plaincopy
Alpha:
auto sp = (Sprite*)sp_dic->objForKey("sp1");//取出sp1
beta:
auto sp = sp_vec.at("sp1");//通过键值获得sp1
4、其他功能
[cpp] view
plaincopy
auto sp5 = sp_map.at("sp1");//通过key取出sp1
sp_map.insert("10",sp5);//再将sp1 以三个key值的方式存入map
sp_map.insert("20",sp5);
sp_map.insert("30",sp5);
auto _key = sp_map.keys(sp1);//获得sp1对应的key值
for(const auto&e : _key)
{
//C++ 11 后新增的这种for 功能,不懂的可以去百度下
CCLOG("_key is %s",e.c_str());//输出sp1 对应的key值(有四个,分别是:sp1,10,20,30)
}
Map对象的元素是键-值对,也就是每个元素包含两个部分:键以及由键关联的值。这种键和键值组成一个pair类型,它的first元素指向键,second元素则为元素。如下:
[cpp] view
plaincopy
auto find_sp = sp_map.find("10");//通过find()查找key为“10”的pair类型。
auto sp6 = find_sp->second;//键对应的对象
std::string find_str = find_sp->first;//键
CCLOG("sp6 key value is %s",find_str.c_str());//打印出键
sp6->runAction(MoveBy::create(0.3f,Point(200,0)));//让sp6做运动
恩,天气不错,就写到这吧,再多写一点又要露馅了....
尊重原创,转载请注明原址:http://blog.csdn.net/start530?viewmode=contents
本篇接着上一篇的容器继续唠叨,了解上一篇:http://blog.csdn.net/start530/article/details/19170853
既然Vector是对比Array,那么Map就对比Dictionary吧。
1、创建
[cpp] view
plaincopy
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);
[cpp] view
plaincopy
//创建容器
Alpha:
auto sp_dic = Dictionary::create();//创建一个字典
beta:
//建立一个关联容器map,第一个参数是string型的key,第二个参数是Sprite类的key值
Map<std::string,Sprite*>sp_map;
2、将对象放入到容器中
[cpp] view
plaincopy
Alpha:
sp_dic->setObject(sp1,"sp1");//将精灵放入字典中,第二个参数是精灵在字典中的key
sp_dic->setObject(sp2,"sp2");
beta:
sp_map.insert("sp1",sp1);//将精灵放入容器中,第一个参数是key
sp_map.insert("sp2",sp2);
3、取出容器中的元素
map是键-值对的集合。map类型通常可以理解为关联数组,Vector容器可以使用类似数组a[0],a[2]这种下标的方式获得容器内的元素,Map容器也是可以通过下标的方式获取,但下标是指元素特定的键,而不是通过在数组中的位置。
[cpp] view
plaincopy
Alpha:
auto sp = (Sprite*)sp_dic->objForKey("sp1");//取出sp1
beta:
auto sp = sp_vec.at("sp1");//通过键值获得sp1
4、其他功能
[cpp] view
plaincopy
auto sp5 = sp_map.at("sp1");//通过key取出sp1
sp_map.insert("10",sp5);//再将sp1 以三个key值的方式存入map
sp_map.insert("20",sp5);
sp_map.insert("30",sp5);
auto _key = sp_map.keys(sp1);//获得sp1对应的key值
for(const auto&e : _key)
{
//C++ 11 后新增的这种for 功能,不懂的可以去百度下
CCLOG("_key is %s",e.c_str());//输出sp1 对应的key值(有四个,分别是:sp1,10,20,30)
}
Map对象的元素是键-值对,也就是每个元素包含两个部分:键以及由键关联的值。这种键和键值组成一个pair类型,它的first元素指向键,second元素则为元素。如下:
[cpp] view
plaincopy
auto find_sp = sp_map.find("10");//通过find()查找key为“10”的pair类型。
auto sp6 = find_sp->second;//键对应的对象
std::string find_str = find_sp->first;//键
CCLOG("sp6 key value is %s",find_str.c_str());//打印出键
sp6->runAction(MoveBy::create(0.3f,Point(200,0)));//让sp6做运动
恩,天气不错,就写到这吧,再多写一点又要露馅了....
尊重原创,转载请注明原址:http://blog.csdn.net/start530?viewmode=contents
相关文章推荐
- Cocos2dx 3.0 过渡篇(九)浅谈容器Map
- Cocos2dx 3.0 过渡篇(八)浅谈容器Vector
- Cocos2dx 3.0 过渡篇(八)浅谈容器Vector
- Cocos2dx 3.0 过渡篇(八)浅谈容器Vector
- Cocos2dx 3.0 过渡篇(八)浅谈容器Vector
- Cocos2dx 3.0游戏开发找小三之容器篇:Vector、Map、Value
- Cocos2dx 3.0游戏开发找小三之容器篇:Vector、Map、Value 及 网络通信
- 10、Cocos2dx 3.0游戏开发找小三之容器篇:Vector、Map、Value
- cocos2dx-3.0(13)------容器Vector和Map
- 10、Cocos2dx 3.0游戏开发找小三之容器篇:Vector、Map、Value
- 浅谈容器Vector ,话说ValueMap的一般使用。Cocos2dx 3.0 过渡篇
- 10、Cocos2dx 3.0游戏开发找小三之容器篇:Vector、Map、Value
- Cocos2dx 3.0 过渡篇(十四)用touch拖动女主打败小三!
- cocos2dx3.0 Vector Map Value 内存管理总结
- 如何使用cocos2dx3.0制作基于tilemap的游戏:第三部分·完
- cocos2dx的模板容器简单使用(Vector,Map,Value)
- Cocos2dx 3.0 过渡篇 (二十一)自从Label有了freeType做靠山以后...enableShadow
- Cocos2dx 3.0 过渡篇(一) 初体验
- Cocos2dx 3.0 过渡篇 (二十一)自从Label有了freeType做靠山以后...
- Cocos2dx 3.0 过渡篇(十七) std::bind与CC_CALLBACK不得不说的故事