您好,登錄后才能下訂單哦!
【嘮叨】
入口類AppDelegate.cpp是游戲程序的入口。
【AppDelegate.cpp】
這是游戲程序的入口,主要用于游戲程序的邏輯初始化,并創(chuàng)建運行程序的入口界面(即第一個游戲界面場景)。
里面有三個方法:
// applicationDidFinishLaunching(); //邏輯初始化 applicationDidEnterBackground(); //切換到后臺 applicationWillEnterForeground(); //切換到前臺 //
源碼分析:
// bool AppDelegate::applicationDidFinishLaunching() { //初始化一個導演, 只能有一個導演 auto director = Director::getInstance(); //使用OpenGLView auto glview = director->getOpenGLView(); if(!glview) { glview = GLView::create("My Game"); glview->setFrameSize(480, 320); //程序窗口標題 director->setOpenGLView(glview); } //屏幕適配,設置游戲設計的分辨率 glview->setDesignResolutionSize(480, 320, ResolutionPolicy::SHOW_ALL); //開啟狀態(tài)顯示, 幀數,精靈數等 director->setDisplayStats(true); //刷新頻率,每秒60幀。 director->setAnimationInterval(1.0 / 60); //創(chuàng)建一個場景HelloWorld,這是游戲程序的第一個界面 auto scene = HelloWorld::createScene(); //運行 director->runWithScene(scene); return true; } // 切換到后臺 void AppDelegate::applicationDidEnterBackground() { //暫停游戲 Director::getInstance()->stopAnimation(); //暫停音樂 SimpleAudioEngine::getInstance()->pauseBackgroundMusic(); } // 切換到前臺 void AppDelegate::applicationWillEnterForeground() { //繼續(xù)游戲 Director::getInstance()->startAnimation(); //繼續(xù)音樂 SimpleAudioEngine::getInstance()->resumeBackgroundMusic(); } //
講到這里,大家可能會感到疑惑。為什么會設置了兩次分辨率大小呢?
setFrameSize(480, 320);
setDesignResolutionSize(480,320,ResolutionPolicy::SHOW_ALL);
朋友們,這兩個的意義是不一樣滴。
setDesignResolutionSize 是設置了我們游戲設計時候的分辨率,即想要適配的寬480高320的屏幕比例。也就是說設計者初衷的游戲分辨率屏幕大小。但是對于每個用戶來說,他們使用的設備不一定是(480,320)的,比如手機有大有小。而后面的 ResolutionPolicy::SHOW_ALL 參數意思是按照原比例(480/320)進行放縮以適配設備的實際屏幕。
setFrameSize(480, 320) 則是設置我們預想設備的屏幕大小,也就是應用程序窗口的大小。
以下貼了幾張對比圖,加深理解。
1、這是原圖片大小,窗口大小為480 * 320。
2、若設置窗口大小為setFrameSize(960, 640),而不設置設計分辨率放縮比例ResolutionPolicy::SHOW_ALL 的情況下,圖片不放縮,原圖還是480 * 320。
3、設置了 ResolutionPolicy::SHOW_ALL 之后,圖片放縮到適配整個屏幕960 * 640 了。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。