大佬教程收集整理的这篇文章主要介绍了1.Cocos2dx 3.2中vector,ValueMap,Touch触摸时间的使用.iconv字符编解码,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
Cocos2dx3.2以后使用Vector<T>代替了CCArray。案例如下:
#ifndef __T02Vector_H__ #define __T02Vector_H__
#include "T32.h"
class T02Vector : public Layer public: CREATE_FUNC(T02Vector);
//Cocos2dx3.2以后使用Vector代替了CCArray Vector<Sprite*> _arr;
bool init(); };
#endif |
@H_801_431@编写:T02Vector.cpp |
#include "T02Vector.h"
//in cocos3.2 Vector代替CCArray //如果不是Ref的子类,那不能用Vector,应该用std::vector bool T02Vector::init() Layer::init(); Sprite* sprite = Sprite::create();
//增加元素
//遍历 Sprite*>::iterator it; for (it = _arr.begin(); it != _arr.end(); ++it) Sprite* s = *it; } for (auto it = _arr.end();++it)
}
for (auto it: _arr)
}
//从后往前遍历 for (auto it = _arr.rbegin(); it != _arr.rend();++it)
}
//删除
return true; } |
@H_801_431@2 Map的用法(注意字符编解码的第三方库有:iconv,cocos中集成的有这方面的功能)
@H_801_431@头文件:T03Map.h |
#ifndef __T03Map_H__ #define __T03Map_H__
#include "T32.h" class T03Map : public Layer{ public: CREATE_FUNC(T03Map); bool init(); };
#endif |
@H_801_431@编写:T03Map.cpp |
#include "T03Map.h"
/* ValueMap是用来代替cocos2d.x的CCDictionary */ bool T03Map::init() Layer::init();
//内容的加载 ValueMap& vm = FileUtils::geTinstance()->getValueMapFromFile("about.xml");
//CCDictionary* Dict = CCDictionary::createWithContentsOfFile("about.xml"); //const cCString* x = Dict->valueForKey("x"); //x->intValue();
//查找 auto it = vm.find("aaa"); if (it == vm.end()) CCLog("can not find aaa"); }
it = vm."people3"); it->first; //key:的类型是std::string it->second; //value:的类型是Value,相对cocos3.2.3的CCString "key is %s,value is %s",it->first.c_str(),it->second.asString().c_str());
"............................end");
vm["中文"] = "bbb";
"........start walk over"); //遍历 for (auto it = vm.begin(); it != vm.end();++it) c_str()); } "..........................end");
writeToFile(vm,"new.xml");
#if 0 // C++11 for (auto it : vm) it.first; it.second; }
// 插入 vm["aa"] = 10;
// 访问,这种访问有副作用,如果bb节点不存在,它会创建一个bb节点 Value& v = vm["bb"]; v = 100;
vm["bb"] = false; #endif return true; } |
@H_801_431@用到的about.xml如下: |
<?xml version="1.0" encoding="UTF-8" ?> <plist> <Dict> <key>people1</key> @H_801_431@<String>许佳音工作室出品</String> <key>people2</key> @H_801_431@<String>总监:许佳音</String> <key>people3</key> @H_801_431@<String>程序:姜博</String> <key>people4</key> @H_801_431@<String>美术:马俊</String> <key>people5</key> @H_801_431@<String>改编:班级</String> </Dict> </plist> |
@H_801_431@3 T04Label的用法
__T04Label_H__ #define __T04Label_H__
#include T04Label :public T04Label);
|
"T04Label.h"
bool T04Label::init();
Label* label = Label::createWithCharMap("fonts/Labelatlas.png",24,32,21); font-family:新宋体; font-size:9.5pt">'0'); addChild(label); label->setPosition(winSize.width / 2,winSize.height / 2); }
#if 0 createWithBMFont(); createWithSystemFont("aaa",21); font-family:新宋体; font-size:9.5pt">"Arial",24); createWithTTF(""); #endif //Label* label = Label::createWithTexture() return true; } |
@H_801_431@运行结果:
|
@H_801_431@3 T05Touch触摸事件的用法
@H_801_431@头文件:T05Touch.h |
__T05Touch_H__ #define __T05Touch_H__
#include T05Touch :public Layer public: T05Touch);
bool init(); void TouchEnded(Touch*,Event *); };
#endif |
@H_801_431@编写:T05Touch.cpp |
"T05Touch.h"
bool T05Touch::init();
// 一般使用这种方式,和一个Node相关联 EventListenerTouchOneByOne* ev = EventListenerTouchOneByOne::create(); ev->onTouchBegan = [](Event*){return true; }; // ev->onTouchEnded = [](Touch*,Event*){}; ev->onTouchEnded = CC_CALLBACK_2(TouchEnded,this);
_eventDispatcher->addEventListenerWithSceneGraphpriority(ev,this); }
#if 0 // 固有优先级的方式使用比较少 create(); ev->setSwallowTouches(true);
ev->onTouchBegan = [](Event*){"Touch Begin"); return true; };
_eventDispatcher->addEventListenerWithFixedPriority(ev,-128); } #endif
Sprite* node = Sprite::create(); addChild(node);
Touch* touch,133); font-family:新宋体; font-size:9.5pt">Event*){ //通过touch->getLOCATIOn()的方式获得被选中的点的位置 Vec2 pt = touch->getLOCATIOn(); "Sprite is touched,pt.x=%f,pt.y=%f",pt.x,pt.y); return true;
}; // ev->onTouchEnded = [](Touch*,Event*){}; // ev->onTouchEnded = CC_CALLBACK_2(T05Touch::TouchEnded,this);
_eventDispatcher->BACkground:white; color:rgb(136,node);
}
EventListenerTouchAllAtOnce* ev = EventListenerTouchAllAtOnce::create(); ev->onTouchesBegan = [](const std::vector<Touch*>&,133); font-family:新宋体; font-size:9.5pt">Event*){}; _eventDispatcher->BACkground:white; color:rgb(136,this); }
return true; }
void Event*){ } |
以上是大佬教程为你收集整理的1.Cocos2dx 3.2中vector,ValueMap,Touch触摸时间的使用.iconv字符编解码全部内容,希望文章能够帮你解决1.Cocos2dx 3.2中vector,ValueMap,Touch触摸时间的使用.iconv字符编解码所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。