首页 > 代码库 > 1.Cocos2dx 3.2中vector,ValueMap,Touch触摸时间的使用.iconv字符编解码

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

编写: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);

 

    //遍历

    Vector<Sprite*>::iterator it;

    for (it = _arr.begin(); it != _arr.end(); ++it)

    {

        Sprite* s = *it;

    }

    for (auto it = _arr.begin(); it != _arr.end();++it)

    {

    

    }

 

    for (auto it: _arr)

    {

 

    }

 

    //从后往前遍历

    for (auto it = _arr.rbegin(); it != _arr.rend();++it)

    {

 

    }

 

    //删除

    _arr.eraseObject(sprite);

 

    return true;

}

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

头文件:T03Map.h

#ifndef __T03Map_H__

#define __T03Map_H__

 

#include "T32.h"

class T03Map : public Layer{

public:

    CREATE_FUNC(T03Map);

    bool init();

};

 

#endif

编写: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.find("people3");

    it->first;   //key:的类型是std::string

    it->second;  //value:的类型是Value。相对cocos3.2.3CCString

    CCLog("key is %s, value is %s", it->first.c_str(), it->second.asString().c_str());

 

    CCLog("............................end");

 

    vm["中文"] = "bbb";

 

    CCLog("........start walk over");

    //遍历

    for (auto it = vm.begin(); it != vm.end();++it)

    {

        CCLog("key is %s,value is %s",it->first.c_str(),it->second.asString().c_str());

    }

    CCLog("..........................end");

 

    FileUtils::getInstance()->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;

}

用到的about.xml例如以下:

<?xml version="1.0" encoding="UTF-8" ?>

<plist>

<dict>

<key>people1</key>

<string>许佳音工作室出品</string>

<key>people2</key>

<string>总监:许佳音</string>

<key>people3</key>

<string>程序:姜博</string>

<key>people4</key>

<string>美术:马俊</string>

<key>people5</key>

<string>改编:班级</string>

</dict>

</plist>

3  T04Label的使用方法

头文件:T04Label.h

#ifndef __T04Label_H__

#define __T04Label_H__

 

#include "T32.h"

class T04Label :public Layer{

public:

    CREATE_FUNC(T04Label);

 

    bool init();

};

 

#endif

编写:T04Label.cpp

#include "T04Label.h"

 

bool T04Label::init()

{

    Layer::init();

1.Cocos2dx 3.2中vector,ValueMap,Touch触摸时间的使用.iconv字符编解码