溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

cocos2dx[3.2](5) ——入口類AppDelegate.cpp

發(fā)布時間:2020-06-27 22:50:45 來源:網絡 閱讀:3102 作者:shahdza 欄目:開發(fā)技術

【嘮叨】

    入口類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。

cocos2dx[3.2](5) ——入口類AppDelegate.cpp


    2、若設置窗口大小為setFrameSize(960, 640),而不設置設計分辨率放縮比例ResolutionPolicy::SHOW_ALL 的情況下,圖片不放縮,原圖還是480 * 320。

cocos2dx[3.2](5) ——入口類AppDelegate.cpp


    3、設置了 ResolutionPolicy::SHOW_ALL 之后,圖片放縮到適配整個屏幕960 * 640 了。

cocos2dx[3.2](5) ——入口類AppDelegate.cpp



向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI