Cocos2d-x屏幕適配問題

一直以來,Cocos2d-x屏幕適配問題一適困擾着剛入門的小夥伴們,每次都要在投影儀下給他們解釋大半天。因此呢,我乾脆直接來寫個博文好了。spa

針對iOS的產品:設計

320x480和640x960的寬高比是2:3=0.666...,iPhone4及iPhone3G就是這個寬高比code

768x1024,1536x2048的寬高比是3:4 = 0.75,iPadMini,iPad2,iPad3,iPadAir等都是這個比例遊戲

640x1136的寬高比是40:71=0.56,這是iPhone5,iPhone5S的屏幕,一直不明白爲何不直接作成9:16。開發

針對Android:產品

Android的屏幕就太多了,咱們只看比較主流的:io

480x800的寬高比是0.6,即3:5,兩年前很是流行,隨着大屏手機的普及,這些屏幕的手機如今已經比較少了。入門

Android上也有蠻多320x480屏幕的手機,但這些用戶基本上不是什麼手要遊戲玩家。並且這種屏幕根本玩不起遊戲。class

小米二、三星Note2:720x1280,小米3:1080x1920,寬高比都是9:16=0.5625程序

從這些數據看來,只有iPad的屏幕寬高比最大,也就是說屏幕看起來最短,在作遊戲的時候,最短知足最短的3:4的屏幕,最長知足屏幕9:16再長一點點就好了,相信不會再有比iPad更短的屏幕,沒有比iPhone5長得太多的屏幕,要否則就真的是反人類了。

Cocos2d-x2.1.4版本中提供了一個設計尺寸的概念,這種設計可讓你只作一套圖就能夠知足各類屏幕,本人在實際開發中屢次使用,屢試不爽!

且看我項目AppDelegate.cpp文件下的一代碼:

爲了方便拷貝,提供如下代碼。

    CCDirector *pDirector = CCDirector::sharedDirector();
    CCEGLView* pEGLView = CCEGLView::sharedOpenGLView();//獲取到OpenGLView
    pDirector->setOpenGLView(pEGLView);    
    pEGLView->setDesignResolutionSize(1340.0f, 640.0f, kResolutionFixedHeight) ;

setDesignResolutionSize就是設置一個設計尺寸,設計尺寸是個什麼概念呢?它會將全部設備的寬度或高度作縮放成統一的一個尺寸,kResolutionFixedHeight和kResolutionFixedWight兩個參數表達的意思就是以高度或者寬度固定,另一個方向等比綻開。舉個例子:

當你將設計尺寸設置爲640x1340,且kResolutionFixedHeight,那麼在程序中全部設備上取到的屏幕尺寸,高度都將變成640,寬度則根等比縮放。即使是iPad,取得的屏幕寬度也一樣是640,而寬度則變成了800多。而320x480的小屏幕,在設置了設計尺寸之後,其高度會變成640,寬度則自動縮放。這其實就是物理尺寸到設計尺寸的一個映射。


寫了這麼多,自認爲寫得不夠清楚,按理應該圖文並茂的,但確實沒有時間,要上班了,但願小夥伴們能看懂。

相關文章
相關標籤/搜索