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的指令碼,用命令列定位到該指令碼所在目錄並執行它 或者...