cocos2d x 3 0深入了解之五

2021-06-21 13:16:02 字數 2831 閱讀 6886

1、首先推薦一篇文章:

2、glview->setframesize(320,480);   //是改變win32螢幕下的的視窗大小

glview->setdesignresolutionsize(960,640,resolutionpolicy::no_border);  //是自適應螢幕大小,其中getwinszie()是get這裡的大小,而不是get  glview->setframesize(320,480)的數值

3、由於場景隨著角色移動這兩天搞的我很頭疼,因此,想重新用3.0重寫tilemap,這裡參照

(1)瓦片地圖:關係

object(valuemap)   

objectground           

maptile(sprite)

layer

map

cctmxobjectgroup.h檔案:tmxobjectground代表的是tmx物件組。

a、tmxobjectground相當於乙個層

b、tmxobjectground可以儲存多個object物件,每個object物件都用valuemap(即dictionary)儲存其資訊

c、通過對valuemap物件的讀取key操作來讀取object物件的位置或使用者自定義的其他資訊。

cctmxlayer.h檔案:tmxlayer代表的是tmx層

a、是spritebatchnode的類,tmxlayer相當於乙個容器,每個tile相當於乙個精靈,將精靈加入tmxlayer容器中

b、tmxlayer的座標系是以左上角為原點,具體的位置可以參考tile這個軟體所標識的位置:

c、移除layer上的方法:

(一)    m_ptilelayer=m_ptilemap->getlayer("background");

m_ptilelayer->removetileat(point(3,20));

(二)    m_ptilelayer=m_ptilemap->getlayer("background");

sprite *psp2=m_ptilelayer->gettileat(point(3,20));

m_ptilelayer->removechile(psp2,true);

d、關於gl座標(以左下角為原點)轉化tilemap座標:

int x=position.x/m_ptilemap->gettilesize().width;

int y=(m_ptilemap->getmapsize().width*m_ptilemap->gettilesize().width-position.y)/m_ptilemap->gettilesize().height;

return point(x,y);

瓦片大小(即每乙個小瓦片的長寬):m_ptilemap->getmapsize();

地圖大小(即tilemap有多少個瓦片):m_ptilemap->gettilesize();

整個地圖大小:width=m_ptilemap->getmapsize().width*m_ptilemap->gettilesize().width;

height=m_ptilemap->getmapsize().height*m_ptilemap->gettilesize().height;

cctmxxmlparser.h檔案:解析xml檔案

tmxlayerinfo為層的資訊

tmxtilesetinfo為瓦片的資訊

tmxmapinfo為地圖的資訊

cctmxtilemap.h檔案:

a、每乙個瓦片會被當做乙個精靈

b、通過呼叫layer->tileat(position)來將精靈新增到tilemap

c、瓦片的錨點是(0,0),瓦片地圖的錨點(0,0)

建立tilemap有兩種方法:

(1)auto m_ptilemap=tmxtiledmap::create("tilemap/tilemap.tmx");

(2)std::string resources="tilemap";

std::string file=resources+"/tilemap.tmx";

string *str=string::createwithcontentsoffile(fileutils::getinstance()->fullpathforfilename(file.c_str()).c_str());

m_ptilemap=tmxtiledmap::createwithxml(str->getcstring(),resources.c_str());

當然,第二種方法只是好奇,個人不推薦使用。

ccdictionary.h檔案:僅僅是ref或者其子類的指標能夠插入到dictionary

使用方法:

__dictionary *pdict=__dictionary::create();

string *pvalue1=string::create("100");

string *pvalue2=string::create("120");

integer *pvalue3=integer::create(200);

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

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

pdict->setobject(pvalue3,"key3");

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

integer *pineger=static_cast(pdict->objectforkey("key3"));

這裡附上自己寫的原始碼和資源:

cocos2d x 3 0 編譯問題

3.0最主要的問題是它引進了c 11 所有ndk版本必須是r8e版本以上,即使你已經有這些已經準備好,還要注意一點是ndk編譯的時候預設採用ndk toolchain version 4.6的形式去編譯,這個時候就會出現 error thread in namespace std does not ...

cocos2dx 3 0 學習資源

目前看見的cocos2dx 3.0 學習資源 官方的英文 我也在wiki上看了一會,有的還用有道詞典查詢的單詞什麼的。史上最坑爹的遊戲 holdtail 目前資料很少,mac下開發的資源就更少了。如果有朋友看見其他資源可以告訴我啊,謝謝 cocos2dx 3.0基礎知識 cocos2dx 3.0 a...

cocos2d x 3 0建立專案

之前一直用的是cocos2d x 2.3版本,使用tools裡面的create project.py指令碼可以很方便的建立專案。今天更新為3.0後,發現新版建立專案的方式有了很大的改變,於是在這裡記錄一下。在3.0的根目錄下有乙個setup.py的指令碼,用命令列定位到該指令碼所在目錄並執行它 或者...