Cocos2dx 基本內功第一部 基本資料結構

2021-08-13 03:27:46 字數 4589 閱讀 6475

cocos2dx封裝了一些常用的資料結構,我們分為兩個部分介紹。一部分是對基本資料型別,int、float、double、bool的裝箱。一部分是比較複雜的復合資料結構__string、__array、__dictionary、size、rect、point、這些資料結構大多數是用c++方式重寫了oc語言中foundation框架的介面。所以有oc底子的可以調過,大概瀏覽即可。

第一部分:

int對應的裝箱是integer,在cocos2dx中建立這種整數物件是用create方法,auto pint = integer::create(30);

int       ---------auto pint      = __integer::create(2);

double ---------auto pdouble =  __double::create(1.0);

float    ---------auto pfloat    =  __float::create(2.0);

第二部分:

復合資料結構

__string

auto pstr = string::create("cocos2dx");

auto pstr2 = string::createwithformat("i love %s", pstr->getcstring());

bool isequaleach = pstr->isequal(pstr2);

log("%s",isequaleach == true?"equal":"not equal");

#結果是notequal

__array

array物件是對c++中陣列的封裝。array中的元素是ref、可以存不同的資料型別。

建立乙個空陣列,array::create()

增:add系列、addobject 刪:remove***系列,代表removeobjectatindext() 改:replaceobjectatindex()  查:get系列、getindexofobject()

__dictionary

建立字典物件,auto pdict = dictionary::create()

新增鍵值對,pdict->setobject(obj, "key");

刪除鍵對應的值, pdict->removeobjectforkey("somekey");

查                 ,pdict->objectforkey("somekey");

auto pdict = dictionary::create();

auto pv1 = string::create("v1");

auto pv2 = string::create("v2");

pdict->setobject(pv1, "key1");

pdict->setobject(pv2, "key2");

string *pstr1 = (string*)pdict->objectforkey("key1");

string *pstr2 = (string*)pdict->objectforkey("key2");

log("str1 = %s,str2 = %s", pstr1->getcstring(), pstr2->getcstring());

#使用objectforkey獲得的是object物件,要強制型別轉換為你確定的那個型別。

size、rect、point

size於rect的區別是size只有長寬的屬性,而rect還有個起始點屬性,他們都是表示一塊矩形區域。

其中rect最常使用的是用來判斷某個點在不再這個矩形區域內。其實他們都是物件,不像oc中是結構體。1//

生成兩個點

2    point point1 = point(10,10);

3     point point2 = point(60,60);

4     point point3;5//

點1與x軸的夾角

6    log("\n點1(%f,%f)與x軸的夾角為:%f",point1.x,point1.y,point1.getangle());7//

兩個點的夾角

8    log("\n點1(%f,%f)與點2(%f,%f)的夾角為:%f",point1.x,point1.y,point2.x,point2.y,point1.getangle(point2));9//

兩個點的距離

10    log("\n點1(%f,%f)與點2(%f,%f)的距離為:%f",

11     point1.x,point1.y,point2.x,point2.y,point1.getdistance(point2));

12//

兩個點相加

13    point3 = point1 + point2;

14     log("\n(%f,%f)+(%f,%f)=(%f,%f)",point1.x,point1.y,point2.x,point2.y,point3.x,point3.y);

15//

兩個點相減

16     point3 = point1-point2;

17     log("\n(%f,%f)-(%f,%f)=(%f,%f)",point1.x,point1.y,point2.x,point2.y,point3.x,point3.y);

18//

除法19

point3 = point1/2;

20     log("\n(%f,%f)/2=(%f,%f)",point1.x,point1.y,point3.x,point3.y);

21//

乘法22

point3 = point1*2;

23     log("\n(%f,%f)+(%f,%f)=(%f,%f)",point1.x,point1.y,point2.x,point2.y,point3.x,point3.y);

2425

//使用sizemake建立兩個size

26    size size1 = size(10, 20);

27     size size2 = size(50, 60);

28     size size3;

29//

兩個size相加

30    size3 = size1 + size2;

31     log("size(%f,%f)+size(%f,%f)=size(%f,%f)",size1.width,size1.height,size2.width,size2.height,size3.width,size3.height);

32//

兩個size相減

33    size3 = size1 - size2;

34     log("size(%f,%f)-size(%f,%f)=size(%f,%f)",size1.width,size1.height,size2.width,size2.height,size3.width,size3.height);

35//

size乘法

36    size3 = size1*10;

37     log("size(%f,%f)*10=size(%f,%f)",size1.width,size1.height,size3.width,size3.height);

38//

size除法

39    size3 = size1/10;

40     log("size(%f,%f)/10=size(%f,%f)",size1.width,size1.height,size3.width,size3.height);

4142

43//

rect測試

44//

生成乙個座標為10,20,寬為50,高為30的矩形區域

45    rect rect = rect(10, 20, 50, 30);

46//

生成兩個點

47    point1 = point(15,25);

48     point2 = point(100,100);

49if (rect.containspoint(point1)) else

54if (rect.containspoint(point2)) else

59//

獲取rect矩形區域最左、右、上、下、中間的座標點

60float maxx = rect.getmaxx();

61float minx = rect.getminx();

62float maxy = rect.getmaxy();

63float miny = rect.getminy();

64float midx = rect.getmidx();

65float midy = rect.getmidy();

66     log("rect的左下角座標為(%f,%f)\n左上角座標為(%f,%f)\n右下角座標為(%f,%f)\n右上角角座標為(%f,%f)\n中點座標為(%f,%f)\n"

67         ,minx,miny,minx,maxy,maxx,miny,maxx,maxy,midx,midy);

Cocos2d X選單教程 第一部分

此文的cocos2d版是由泰然論壇的子龍山人翻譯.深表感謝.這裡是他們的鏈結 這是英文版鏈結 1 由於本人實在是懶得離譜,所以從啟動xcode 到成功執行 helloworld 俺就不寫了.跟文章中cocos2d的建立方式一樣 2 刪除helloworld.h和.cpp檔案 也是一樣的.但是建立 s...

第一部分 基本規則

1 內部鏈結,外部鏈結 比如a.cpp中 void test 在b.cpp中看似訪問不到test,我們只需要在b.h中定義乙個 void test 然後在b.cpp中就能夠訪問到了,鏈結的時候編譯器會鏈結到a.cpp的test函式的 能夠申明為內部鏈結是最好的了 extern 乙個變數就表示從其它地...

Oracle部署第一部曲

1 無法用所有預設使用者登入sql plus 解決方案 執行 cmd 鍵入命令 sqlplus as sysdba 2 查詢資料庫中所有使用者 select username from dba users 3 查詢資料庫中所有表空間 select from sys.dba tablespaces 4...