cocos2dx 3.x Value、Vector和Map意识
1. Value
cocos2d::Value?這包括一個非常大的數(shù)字原生類型(int,float,double,bool,unsigned char,char*?和?std::string)外
加std::vector<Value>,?std::unordered_map<std::string,Value>?和?std::unordered_map<int,Value>?的類。
你能夠把全部上面的提及的原生類型放入?cocos2d::Value?對象中,然后將它們轉化為相應的原生類型。反之亦然。
Value val; // 調用默認構造函數(shù) if (val.isNull()) {log("val is null"); }else{std::string str =val.getDescription();log("The description of val0:%s",str.c_str()); } //---------------------------------------------------- Value val1(65); // 用一個 int 初始化 //Value val1(3.4f); // 用一個 float 初始化 //Value val1(3.5); // 用一個 double 初始化 log("The description of the integer value:%s",val1.getDescription().c_str()); log("val1.asByte() = %c",val1.asByte()); //---------------------------------------------------- std::string strV = "string"; Value val2(strV); // 用 string 初始化 log("The description of the string value:%s",val2.getDescription().c_str()); //---------------------------------------------------- auto sp0 = Sprite::create(); Vector<Object*>* vecV = new Vector<Object*>(); vecV->pushBack(sp0); Value val3(vecV); // 用 Vector 初始化 log("The description of the Vector value:%s",val3.getDescription().c_str()); delete vecV; //---------------------------------------------------- Map<std::string, Object*>* mapV = new Map<std::string, Object*>(); mapV->insert(strV,sp0); Value val4(mapV); // 用 Map 初始化 log("The description of the Map value:%s",val4.getDescription().c_str()); delete mapV; //---------------------------------------------------- Value val6(&val4); // 用 Map 初始化 log("The description of the Value-type value:%s",val6.getDescription().c_str()); //---------------------------------------------------- val2 = val1; // 在兩個不同指類型間賦值 log("operator-> The description of val2:%s",val2.getDescription().c_str()); val2 = 4; // 直接賦值 log("operator-> The description of val4:%s",val2.getDescription().c_str()); 輸出:cocos2d: val is null cocos2d: The description of the integer value: 65cocos2d: val1.asByte() = A cocos2d: The description of the string value: stringcocos2d: The description of the Vector value: truecocos2d: The description of the Map value: truecocos2d: The description of the Value-type value: truecocos2d: operator-> The description of val2: 65cocos2d: operator-> The description of val4: 4Value的作用和使用方法:在創(chuàng)建Value時,往構造函數(shù)里傳入一個值。Value就會自己主動依據(jù)這個值來決定自己的類型。在獲取Value的值時,就依據(jù)它的類型。調用as**函數(shù)獲取。
整數(shù)、浮點型和字符串之間的轉換
整型轉為字符串: std::string str = "NO"+Value(1).asString();
字符串轉為整型:log("%d",Value("1234").asInt())
浮點型轉字符串:log("%s",Value(123.5f).asString().c_str())
字符串轉浮點型:log("%f",Value("14.45").asFloat())
2. Vector
Vector是一個封裝好的能動態(tài)增長順序訪問的容器。
主要使用的函數(shù)說明:
size():Vector大小
at(index):返回Vector下標為index的對象
pushBack(object):在Vector的最后加入一個object對象
eraseObject(object):從Vector中移除object對象
erase(index):從Vector中移除下標為index的對象
clear():清空Vector
怎樣遍歷Vector
for(auto obj : vector){
...
}
3.Map
Map是一個存儲鍵值對的關聯(lián)式容器,它能夠通過它們的鍵高速檢索相應的值。
主要函數(shù):
insert(key,value):向Map中插入一個對象。
at(key):返回Map中keyword為key的對象
怎樣遍歷Map?
mapKeyVec = map1.keys();for(auto key : mapKeyVec){auto spTag = map1.at(key)->getTag();log("The Sprite tag = %d, MAP key = %s",spTag,key.c_str());log("Element with key %s is located in bucket %zd",key.c_str(),map1.bucket(key));}版權聲明:本文博客原創(chuàng)文章。博客,未經同意,不得轉載。
轉載于:https://www.cnblogs.com/mfrbuaa/p/4673169.html
總結
以上是生活随笔為你收集整理的cocos2dx 3.x Value、Vector和Map意识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ubuntu服务器运行js,让js一直运
- 下一篇: 32款iOS开发插件和工具介绍[效率]