豪華版飛機大戰系列(二)

既上一篇介紹了遊戲的主要概況下,這篇來開始講一下游戲中的各個文件。

先來看看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層,也即遊戲主要邏輯層,接下來介紹遊戲中的各個精靈元素和層。



發佈了36 篇原創文章 · 獲贊 5 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章