cocos2d-x学习笔记(5)

cocos2d-x学习笔记(5),第1张

概述Value Value的所有构造函数: Value(); /** Create a Value by an unsigned char value. */ explicit Value(unsigned char v); /** Create a Value by an integer value. */ explicit Value(int

Value

Value的所有构造函数:

 Value();        /** Create a Value by an unsigned char value. */    explicit Value(unsigned char v);        /** Create a Value by an integer value. */    explicit Value(int v);        /** Create a Value by a float value. */    explicit Value(float v);        /** Create a Value by a double value. */    explicit Value(double v);        /** Create a Value by a bool value. */    explicit Value(bool v);        /** Create a Value by a char pointer. It will copy the chars internally. */    explicit Value(const char* v);        /** Create a Value by a string. */    explicit Value(const std::string& v);        /** Create a Value by a ValueVector object. */    explicit Value(const ValueVector& v);    /** Create a Value by a ValueVector object. It will use std::move internally. */    explicit Value(ValueVector&& v);        /** Create a Value by a ValueMap object. */    explicit Value(const ValueMap& v);    /** Create a Value by a ValueMap object. It will use std::move internally. */    explicit Value(ValueMap&& v);        /** Create a Value by a ValueMAPIntKey object. */    explicit Value(const ValueMAPIntKey& v);    /** Create a Value by a ValueMAPIntKey object. It will use std::move internally. */    explicit Value(ValueMAPIntKey&& v);

在创建Value时,往构造函数里传入一个值,Value就会自动根据这个值来决定自己的类型。在获取Value的值时调用as**函数来获取:
Value valStr = Value("XiaoRuo is ");    Value valint = Value(250);    log("%s%d",valStr.asstring().c_str(),valint.asInt());


Vector,实际上它封装了C++的vector容器类。

 Label* label1 = Label::create("XiaoRuoNo.1","Arial",30);    label1->setposition(Point(250,400));    Label* label2 = Label::create("XiaoRuoNo.2",30);    label2->setposition(Point(250,200));    // 创建Vector对象    Vector<Label*> vec;    // 把2个Label存放到Vector中    vec.pushBack(label1);    vec.pushBack(label2);    // 遍历Vector,取出所有Label,添加到场景    for (auto lab : vec)    {        this->addChild(lab);    }
Vector的一些常用函数:

size():返回Vector存放的对象个数;

at(index):返回Vector某个对象,index为下标值;

front():返回Vector的第一个对象,也就是最先加到Vector的对象;

back():返回Vector的最后一个对象;

pushBack(object):在Vector的最后添加一个object对象;

eraSEObject(object):从Vector中删除object对象;

erase(index):从Vector中删除下标在index处的对象;

clear();清空Vector,也就是删除所用对象。



Map:

Map<int,Label*> xiaoRuoMap;    // 创建100个小若,并保存到Map中    for (int i = 1; i <= 100; i++)    {        // 组合小若的名字        std::string name = "XiaorRuoNo." + Value(i).asstring();        // 创建Label对象,代表小若        Label* lab = Label::create(name.c_str(),30);        // 保存小若Label到Map中,用i作为key,用lab作为value        xiaoRuoMap.insert(i,lab);    }    // 今天约了No.23的小若,我们把她约出来    Label* xiaoRuolab = xiaoRuoMap.at(23);    xiaoRuolab->setposition(Point(200,200));    this->addChild(xiaoRuolab);    return true;


Vector和Map的区别:

Vector保存对象默认是按顺序的,从中获取对象时只能通过下标的方式。而Map保存对象是没有顺序的,它只是保存了key值和value值的对应关系,获取对象事,只需要提供key值就可以。而且Map的key值可以是任何类型,不一定是int型。

总结

以上是内存溢出为你收集整理的cocos2d-x学习笔记(5)全部内容,希望文章能够帮你解决cocos2d-x学习笔记(5)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1074618.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存