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...