【cocos2dx 3.2】Flappy Bird開發超詳細講解(二)素材準備和屏幕自適應分辨率

通過上一篇的學習呢,相信大家已經下載好了我說的那些資源(還沒下的趕緊去下吧吐舌頭)。

突然發現聲音文件沒上傳,囧。。,現在補上吧,鏈接: http://pan.baidu.com/s/1dDGjzvb 密碼: 6q55。

遊戲中一般會有比較多的圖片資源,如果有很多很多的資源,那加載這些資源是非常費時間和內存的,所以如何高效地使用圖片資源對於一款遊戲是相當重要的。在Cocos2d中,我們一般會將圖片資源打包成一張大圖,這樣加載圖片不僅節省了空間,而且還提升了速度。現在我們就把之前下載的那麼多的圖片打包成一張大圖,用什麼打包呢?當然是用我們下載的TextruePacher軟件啦。

=============================================================================================================================

1、TexturePacher打包圖片

如下圖所示:

1)打開軟件,選擇cocos2d,然後將我們下載的圖片拖動到1區域;

2)設置plist文件路徑;

3)設置png文件路徑(最好和上面那個文件放在同一個文件夾下);

4)選擇打包規格,這個我看笨木頭的書裏推薦用這種格式,就選這種啦;

5)打包發佈。

O啦,成功後你可以看到如下的兩個文件,

將這兩個文件和上面下載的聲音文件複製到我們建立的項目路徑下的Resources文件夾下,如下圖所示:

回到VS2013,在resource上右鍵--添加---添加現有項,把上面的三個東西添加進去吧,添加後如下圖:

2、我們打開Appdelegate.cpp,修改如下,代碼裏說的已經很詳細了,自己比對一下,另外關於framesize,winsize,visiblesize不懂得地方可以看我的另一篇博客:

http://blog.csdn.net/myweaven/article/details/38775947

#include "AppDelegate.h"
#include "HelloWorldScene.h"

USING_NS_CC;

AppDelegate::AppDelegate() {

}

AppDelegate::~AppDelegate() 
{
}

bool AppDelegate::applicationDidFinishLaunching() {
    // initialize director
    auto director = Director::getInstance();
    auto glview = director->getOpenGLView();
    if(!glview) {
        glview = GLView::create("My Game");
        director->setOpenGLView(glview);
		glview->setFrameSize(640, 960);
    }

	//適配方案
	//getFrameSize()獲得實際屏幕的大小
	Size frameSize = glview->getFrameSize();
	//這填寫的就是一般你作爲背景圖片的那種圖片的大小,適配的原理就是放到和縮小,而以什麼爲參照,當然就是
	//以最大的那張圖片爲參照,什麼圖片最大,當然是背景圖片了,以後美工做圖的時候用的就是以下的這個尺寸
	//我們這裏背景圖片的分辨率是288*512,所以設置如下
	Size winSize = CCSize(288,512);

	//將寬和高做一個比,通過這個比,來具體的調整邏輯分辨率的大小
	float widthRate = frameSize.width / winSize.width;
	float heightRate = frameSize.height / winSize.height;

	//如果是if中的語句,說明邏輯的高度有點大了,就把邏輯的高縮小到和寬度一樣的比率
	if (widthRate > heightRate)
	{
		//裏邊傳入的前倆個參數就是邏輯分辨率的大小,也就是通過getWinSize()得到的大小
		glview->setDesignResolutionSize(winSize.width,
			winSize.height*heightRate / widthRate, ResolutionPolicy::NO_BORDER);
	}
	else
	{
		glview->setDesignResolutionSize(winSize.width*widthRate / heightRate, winSize.height,
			ResolutionPolicy::NO_BORDER);
	}


    // turn on display FPS
    director->setDisplayStats(true);

    // set FPS. the default value is 1.0/60 if you don't call this
    director->setAnimationInterval(1.0 / 60);

    // create a scene. it's an autorelease object
    auto scene = HelloWorld::createScene();

    // run
    director->runWithScene(scene);

    return true;
}

// This function will be called when the app is inactive. When comes a phone call,it's be invoked too
void AppDelegate::applicationDidEnterBackground() {
    Director::getInstance()->stopAnimation();

    // if you use SimpleAudioEngine, it must be pause
    // SimpleAudioEngine::getInstance()->pauseBackgroundMusic();
}

// this function will be called when the app is active again
void AppDelegate::applicationWillEnterForeground() {
    Director::getInstance()->startAnimation();

    // if you use SimpleAudioEngine, it must resume here
    // SimpleAudioEngine::getInstance()->resumeBackgroundMusic();
}

好了,這次就先到這裏吧,我們下次見微笑

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章