2dx 在3.2時沒有引入 value 概念,用於存放動態型別,實際值通過當時型別和值獲取。
標頭檔案中定義的幾個型別和常量
typedef std::vectorvaluevector;
存放 value 型別的動態陣列
typedef std::unordered_mapvaluemap;
雜湊容器 string->value
typedef std::unordered_mapvaluemapintkey;
雜湊容器 int->value
針對上面的容器稍微有點看法:個人覺得rb的容器在資料量小的時候體現不出優勢,但是 unordered_map 也不一定真的就比rb好
cc_dll extern const valuevector valuevectornull;
cc_dll extern const valuemap valuemapnull;
cc_dll extern const valuemapintkey valuemapintkeynull;
這幾個空容器沒搞懂為啥
value 中比較重要的兩個結構。
列舉型別 type , 分別用於表示 :
none (空型別), byte(位元組), integer(整型), float(浮點數),double(雙精度),
boolean(布林), string(字串), vector(陣列), map(stringkey), int_key_map(intkey)
列舉型別 type _type; 字段表示當前實際型別。
聯合體 _field 字段,分別用於存放對應型別的資料:
unsigned char byteval(byte); int intval(integer); float floatval(float); double doubleval(double); bool boolval(boolean);
std::string* strval(string); valuevector* vectorval(vector); valuemap* mapval(map); valuemapintkey* intkeymapval(int_key_map);
通過對應獲取實際的值。
私有函式:
void clear();
通過當前型別清除當前型別的值,並將 _type 設定為 none
void reset(type type);
設定當前型別,若型別沒變則無操作,否則將清除,如果為指標型別,還將分配物件空間。
公共函式:
inline type gettype() const
獲取當前型別
std::string getdescription() const;
獲取描述,具體的值。
inline bool isnull() const
獲取型別是否可用
unsigned char asbyte() const;
int asint() const;
float asfloat() const;
double asdouble() const;
bool asbool() const;
返回基本型別的值
std::string asstring() const;
將基本型別和字串型別已字串型別返回
特殊說明:基本型別和string之間會相互轉換。也僅限為將當前值轉換為指定值
valuevector& asvaluevector();
const valuevector& asvaluevector() const;
獲取 valuevector 引用或者常引用
valuemap& asvaluemap();
const valuemap& asvaluemap() const;
獲取 valuemap 引用或者常引用
valuemapintkey& asintkeymap();
const valuemapintkey& asintkeymap() const;
獲取 valuemapintkey 引用或者常引用
bool operator!= (const value& v);
bool operator!= (const value& v) const;
bool operator== (const value& v);
bool operator== (const value& v) const;
等於不等於的操作符過載。
value& operator= (const value& other);
value& operator= (value&& other);
value& operator= (unsigned char v);
value& operator= (int v);
value& operator= (float v);
value& operator= (double v);
value& operator= (bool v);
value& operator= (const char* v);
value& operator= (const std::string& v);
value& operator= (const valuevector& v);
value& operator= (valuevector&& v);
value& operator= (const valuemap& v);
value& operator= (valuemap&& v);
value& operator= (const valuemapintkey& v);
value& operator= (valuemapintkey&& v);
操作符 = 過載,用於賦值乙個 value 物件,指定對應的型別和值,右值引用和一般引用沒多大區別,需要注意變數生命週期
value();
explicit value(unsigned char v);
explicit value(int v);
explicit value(float v);
explicit value(double v);
explicit value(bool v);
explicit value(const char* v);
explicit value(const std::string& v);
explicit value(const valuevector& v);
explicit value(valuevector&& v);
explicit value(const valuemap& v);
explicit value(valuemap&& v);
explicit value(const valuemapintkey& v);
explicit value(valuemapintkey&& v);
value(const value& other);
value(value&& other);
建構函式、複製建構函式, explicit 防止隱式轉換。
靜態變數:
static const value null;
沒發現作用,除了乙個空物件
cocos2d實現語音 Cocos2d 聲音API
param url 聲音路徑 cc.audioengine.playmusic url loop 停止背景 param releasedata 是否釋放聲音資料,預設為false cc.audioengine.stopmusic releasedata 暫停背景 cc.audioengine.pau...
Cocos2D研究院之初識Cocos2d(二)
在正式介紹cocos2d之前,我先囉嗦一下本人對這套引擎的看法。我認為coos2d最大的作用就是降低開發成本 貌似所有引擎都是這樣 對於研發部門來說,最大的成本就是時間,所以節省時間是降低成本最有效的方式,cocos2d幾乎封裝了所有開發ios遊戲需要的底層 使剛剛接觸oc的開發者也能很快的製作出效...
Cocos2D研究院之初識Cocos2d(二)
在正式介紹cocos2d之前,我先囉嗦一下本人對這套引擎的看法。我認為coos2d最大的作用就是降低開發成本 貌似所有引擎都是這樣 對於研發部門來說,最大的成本就是時間,所以節省時間是降低成本最有效的方式,cocos2d幾乎封裝了所有開發ios遊戲需要的底層 使剛剛接觸oc的開發者也能很快的製作出效...