博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Cocos2d-x之Value
阅读量:5034 次
发布时间:2019-06-12

本文共 6103 字,大约阅读时间需要 20 分钟。

|   版权声明:本文为博主原创文章,未经博主允许不得转载。

 

  Value类被称为包装类,它可以将int, float, bool, unsigned, har, char等,基本数据类型可以包装成为类,也包装一些c++标准类,如std::string,std::vector<Value>, std::unordered_map<std::string, Value> 和std::unordered<int, Value>。使用Value对象的好处是,封装的基本数据类型,可以使它们具有面向对象的特性,在另一方面,也可以便于数据类型之间的转换。(即:可以将Value类型转换成基本类型,也可以将基本类型转换成Value类型)。

API中的Value常用函数:

1 /** Create a Value by an unsigned char value. */ 2 /**用无符号字符值创建一个值。*/ 3     explicit Value(unsigned char v); 4      5 /** Create a Value by an integer value. */ 6 /**用整形值创建一个值。*/ 7     explicit Value(int v); 8      9 /** Create a Value by a float value. */10 /**用浮点数值创建一个值。*/11     explicit Value(float v);12     13 /** Create a Value by a double value. */14 /**用双精度值创建一个值。*/15     explicit Value(double v);16     17 /** Create a Value by a bool value. */18 /**用bool(逻辑)值创建一个值。*/19     explicit Value(bool v);20     21 /** Create a Value by a char pointer. It will copy the chars internally. */22 /**用字符指针创建一个值。它将复制字符内部。*/23     explicit Value(const char* v);24     25 /** Create a Value by a string. */26 /**用字符串值创建一个值。*/27     explicit Value(const std::string& v);28     29 /** Create a Value by a ValueVector object. */30 /**通过valuevector对象创建一个值。*/31     explicit Value(const ValueVector& v);32 33 /** Create a Value by a ValueVector object. It will use std::move internally. */34 /**通过valuevector对象创建一个值。它将使用内部的std::move。 */35     explicit Value(ValueVector&& v);36     37 /** Create a Value by a ValueMap object. */38 /**由ValueMap对象创建一个值。 */39     explicit Value(const ValueMap& v);40 41 /** Create a Value by a ValueMap object. It will use std::move internally. */42 /**通过ValueMap对象创建一个值。它将使用内部的std::move。*/43     explicit Value(ValueMap&& v);44     45 /** Create a Value by a ValueMapIntKey object. */46 /**通过ValueMapIntKey对象创建一个值。*/47     explicit Value(const ValueMapIntKey& v);48 49 /** Create a Value by a ValueMapIntKey object. It will use std::move internally. */50 /**通过ValueMapIntKe对象创建一个值。它将使用内部的std::move。*/51     explicit Value(ValueMapIntKey&& v);52 53 /** Gets as a byte value. Will convert to unsigned char if possible, or will trigger assert error.获取一个字节值。会如果有可能转换为unsigned char型,或会触发断言错误。 */54     unsigned char asByte() const;55 56 /** Gets as an integer value. Will convert to integer if possible, or will trigger assert error. */57     int asInt() const;58 59 /** Gets as a float value. Will convert to float if possible, or will trigger assert error. */60     float asFloat() const;61 62 /** Gets as a double value. Will convert to double if possible, or will trigger assert error. */63     double asDouble() const;64 65 /** Gets as a bool value. Will convert to bool if possible, or will trigger assert error. */66     bool asBool() const;67 68 /** Gets as a string value. Will convert to string if possible, or will trigger assert error. */69     std::string asString() const;70 71 /** Gets as a ValueVector reference. Will convert to ValueVector if possible, or will trigger assert error. */72     ValueVector& asValueVector();73 74 /** Gets as a const ValueVector reference. Will convert to ValueVector if possible, or will trigger assert error. */75     const ValueVector& asValueVector() const;76 77 /** Gets as a ValueMap reference.Will convert to ValueMap if possible, or will trigger assert error. */78     ValueMap& asValueMap();79 80 /** Gets as a const ValueMap reference. Will convert to ValueMap if possible, or will trigger assert error. */81     const ValueMap& asValueMap() const;82 83 /** Gets as a ValueMapIntKey reference. Will convert to ValueMapIntKey if possible, or will trigger assert error. 获取作为一个ValueMapinTKEY参考。会如果有可能转换为ValueMap TKEY,或会触发断言错误。*/84     ValueMapIntKey& asIntKeyMap();85 86 /** Gets as a const ValueMapIntKey reference. Will convert to ValueMapIntKey if possible, or will trigger assert error.作为获取一个const值PrIntKey参考。会如果有可能转换为ValueMapIntKey,或会触发断言错误 */87     const ValueMapIntKey& asIntKeyMap() const;88 89  /** Checks if the Value is null.@return True if the Value is null, false if not.*/90     inline bool isNull() const { return _type == Type::NONE; }

 

实例:

.h files#ifndef _VALUETEST_SCENE_H_#define _VALUETEST_SCENE_H_#include "cocos2d.h"class valueTest : public cocos2d::Layer{private:public:	static cocos2d::Scene* createScene();	virtual bool init();	void valTest();	CREATE_FUNC(valueTest);};#endif // _VALUETEST_SCENE_H_.cpp filesval2.getDescription().c_str();这条语句的意思是,输出val2对象所描述的信息。#include "ValueTest.h"USING_NS_CC;Scene* valueTest::createScene(){	// 'scene' is an autorelease object	auto scene = Scene::create();	// 'layer' is an autorelease object	auto layer = valueTest::create();	// add layer as a child to scene	scene->addChild(layer);	// return the scene	return scene;}bool valueTest::init(){	if (!Layer::init())	{		return false;	}	valTest();	return true;}void valueTest::valTest(){	//1. 调用默认的构造方法	Value val;	//2. 判断val是否为空	if (val.isNull())	{		log("val is null");	}	else	{		std::string str = val.getDescription();		log("The description of val: %s", str.c_str());	}	//3. 使用int初始化	Value val1(65);	log("The description of the int value: %s", val1.getDescription().c_str());	log("Value.asBtye() = %c", val1.asByte());	//4. 使用float初始化	Value val2(3.1415f);	log("The description of the float value: %s", val2.getDescription().c_str());	log("Value.asBtye() = %c", val2.asByte());	//5. 使用double初始化	Value val3(3.1415967);	log("The description of the integer value: %s", val3.getDescription().c_str());	log("Value.asBtye() = %c", val3.asByte());	//6. 使用字符串初始化	std::string str1 = "china";	Value val4(str1);	log("The description of the string value: %s", val4.getDescription().c_str());	//7. 使用Vector初始化	auto spr = Sprite::create();	Vector
* vec = new Vector
(); vec->pushBack(spr); Value val5(vec); log("The discription of the Vector value: %s", val5.getDescription().c_str()); delete vec; //8. 使用Map初始化 Map
* map = new Map
(); map->insert(str1, spr); //初始化map Value val6(map); log("The discription of the Map value:%s", val6.getDescription().c_str()); delete map;}

 

 

 

转载于:https://www.cnblogs.com/geore/p/5799168.html

你可能感兴趣的文章
【47.76%】【Round #380B】Spotlights
查看>>
Git(使用码云)
查看>>
分享Java web 开发必游之路
查看>>
IIS初始化(预加载),解决第一次访问慢,程序池被回收问题(转载)
查看>>
Bean的Scope
查看>>
【BZOJ】3142: [Hnoi2013]数列
查看>>
http初探
查看>>
elasticsearch的安装
查看>>
__next__()
查看>>
爬取:中国大学排名
查看>>
聊天室(C++客户端+Pyhton服务器)_1.框架搭设
查看>>
UpdatePanel 内控件 更新“外的”控件【转】
查看>>
[CF508E] Arthur and Brackets
查看>>
[CF1029E] Tree with Small Distances
查看>>
tp5.0中及其常用方法的一些函数方法(自己看)和技巧(不断添加中)
查看>>
美团推荐算法实践
查看>>
Netty官方示例
查看>>
[数分提高]2014-2015-2第4教学周第2次课
查看>>
ansible进阶小技巧--tags
查看>>
JSP页面跳转方式
查看>>