既上一篇介紹了遊戲的主要概況下,這篇來開始講一下游戲中的各個文件。
先來看看cocos2d-x 3.0 中一個比較讚的功能,比起3.0以前的要令人非常激動的。雖說3.0出來很久了,我還是說下這個功能,知道的飄過。
對於在不同環境下用cocos2d-x開發手遊,屏幕尺寸是一個比較蛋疼的問題,比如在3.0以前,在代碼中修改屏幕尺寸還是比較麻煩的,而且在電腦上運行良好的尺寸到手機端感覺效果就差了一點。
AppDelegate.cpp是整個遊戲的入口程序,3.0以前設置遊戲尺寸時主要代碼如下:
bool AppDelegate::applicationDidFinishLaunching() {
// initialize director
auto director = Director::getInstance();
auto glview = director->getOpenGLView();
if (!glview) {
glview = GLView::create("My Game");
director->setOpenGLView(glview);
}
director->setOpenGLView(glview);
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8)
// a bug in DirectX 11 level9-x on the device prevents ResolutionPolicy::NO_BORDER from working correctly
glview->setDesignResolutionSize(designResolutionSize.width, designResolutionSize.height, ResolutionPolicy::SHOW_ALL);
#else
glview->setDesignResolutionSize(288, 512, ResolutionPolicy::SHOW_ALL);
#endif
director->setDisplayStats(true);
director->setAnimationInterval(1.0 / 60);
auto scene = LoadingScene::create();
director->runWithScene(scene);
return true;
}
其中主要的代碼爲:
glview->setDesignResolutionSize(288, 512, ResolutionPolicy::SHOW_ALL);
設置的尺寸大小爲寬288,長512的尺寸,這在ubuntu下的效果看起來不是特別的好,主要是兩邊都是黑色的,只有中間纔是遊戲的屏幕顯示。
而在3.0中可以直接在代碼中設置GLView的大小,也就是繪製的遊戲屏幕的大小,
同樣的爲AppDelegate.cpp中的applicationDidFinishLaunching()函數,如下:
bool AppDelegate::applicationDidFinishLaunching() {
// initialize director
auto director = Director::getInstance();
auto glview = director->getOpenGLView();
if(!glview) {
glview = GLView::createWithRect("My Game",Rect(0,0,320,480));
director->setOpenGLView(glview);
}
director->setDisplayStats(false);
director->setAnimationInterval(1.0 / 60);
auto scene = GameLayer::createScene();
director->runWithScene(scene);
return true;
}
感覺清晰的多了吧,重點在於
glview = GLView::createWithRect("My Game",Rect(0,0,320,480));
的部分,直接設置了GLView的繪製大小320*480,Rect(0,0,,,320,480)設置了繪製矩形的座標點和長和寬,座標爲(0,0),長:480,寬;320
如在上篇中的圖像就是在linux下命名終端下跑出來的遊戲圖,
我一般都是在電腦上把遊戲寫的差不多了之後纔到手機端測試的,用電腦跑遊戲要比手機快很多,而且直接操作終端,編譯速度也比eclipse要快一些。
AppDelegate.cpp中主要代碼也就在applicationDidFinishLaunching()函數中,函數中生成了GameLayer場景,然後調用導演類來運行這個場景。
好了這一篇主要介紹了AppDelegate中的一些變化,同時引出了遊戲的GameLayer層,也即遊戲主要邏輯層,接下來介紹遊戲中的各個精靈元素和層。