Cocos2d-x   发布时间:2022-05-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了1.Cocos2dx 3.2中vector,ValueMap,Touch触摸时间的使用.iconv字符编解码大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

  1. Cocos2dx3.2以后使用Vector<T>代替了CCArray。案例如下:

头文件:T02Vector.h

#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();

//增加元素

_arr.pushBACk(sprite);

//遍历

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)

{

}

//删除

_arr.eraseObject(sprite);

return true;

}

@H_801_431@2 Map的用法(注意字符编解码的第三方库有:iconvcocos中集成的有这方面的功能)

@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.xCCDictionary

*/

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.3CCString

"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的用法

@H_801_431@头文件:T04Label.h

__T04Label_H__

#define __T04Label_H__

#include T04Label :public T04Label);

bool

@H_801_431@编写:T04Label.cpp

"T04Label.h"

bool T04Label::init();

{

Label* label = Label::createWithCharMap("fonts/Labelatlas.png",24,32,21); font-family:新宋体; font-size:9.5pt">'0');

label->setString("12345");

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,请注明来意。