COCOS2D 3 9 Value介面分析

2021-07-08 16:51:52 字數 3619 閱讀 9761

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的開發者也能很快的製作出效...