cocos2d-x 螢幕適配
cocos2dx3.2 ——螢幕適配
手機的螢幕大小千差萬別,如現在流行的安卓手機螢幕大部分長寬比例為16:9。而iPhone 5S的長寬比例為71:40(接近16:9),也有預測說iPhone 6S的長寬比例也將會是主流的16:9。另外還有一些平板電腦為4:3、16:10、5:4等等。當然還有一些其他的牌子可能螢幕比例也不一樣。
要想讓你的程式在各種手機上都能很好的呈現遊戲畫面,就需要進行螢幕適配。
【致謝】
【小知識】
解析度:是指螢幕影象的精密度,即顯示器所能顯示的畫素有多少。
如:解析度480×320的意思是水平方向含有畫素數為480個,垂直方向畫素數320個。
螢幕尺寸一樣的情況下,解析度越高,顯示效果就越精細和細膩。
同時解析度也反映了螢幕長寬比例(如15:10)。
【螢幕適配】
1、兩個解析度
1.1、視窗解析度
在AppDelegate.cpp中有個設定視窗解析度的函式。該函式是設定了我們預想裝置的螢幕大小,也就是應用程式視窗的大小。
- //
- glView->setFrameSize(480, 320);
- //
1.2、設計解析度(可視區域)
在AppDelegate.cpp中也有個設定設計解析度的函式。該函式是設定了我們遊戲設計時候的解析度,也就是可視區域的大小,也就是說設計者初衷的遊戲可視區域的解析度螢幕大小。
但是對於每個使用者來說,他們使用的裝置不一定是(480/320)的,比如手機有大有小。
而後面的ResolutionPolicy::SHOW_ALL,意思是按照原比例(480/320)進行放縮以適配實際螢幕大小。
- //
- glview->setDesignResolutionSize(480, 320, ResolutionPolicy::SHOW_ALL);
- //
以下貼了三張對比圖,加深理解。
(1)這是原圖片大小,視窗大小為480 * 320。
(2)若設定視窗大小為setFrameSize(960, 640),而不設定設計解析度ResolutionPolicy::SHOW_ALL
(3)設定了 ResolutionPolicy::SHOW_ALL 之後,圖片放縮到適配整個螢幕960 * 640 了。
2、五種適配模式
從上面的講解我們可以瞭解到,setFrameSize()是設定了視窗大小(即螢幕的實際大小),而這個引數只是為了我們開發時作為模擬參照,在實際手機上執行時,手機的螢幕大小是我們無法設定的。
而螢幕適配的關鍵在於setDesignResolutionSize(),通過它來設定可視區域的解析度以及螢幕適配模式。該函式的前兩個引數為解析度(即螢幕長寬比例),而最後一個引數則是適配的模式。
2.1、適配模式
(1)ResolutionPolicy::EXACT_FIT :拉伸變形,使鋪滿螢幕。
(2)ResolutionPolicy::NO_BORDER :按比例放縮,全屏展示不留黑邊。
(長寬中小的鋪滿螢幕,大的超出螢幕)
(3)ResolutionPolicy::SHOW_ALL :按比例放縮,全部展示不裁剪。
(長寬中大的鋪滿螢幕,小的留有黑邊)
(4)ResolutionPolicy::FIXED_WIDTH :按比例放縮,寬度鋪滿螢幕。
(5)ResolutionPolicy::FIXED_HEIGHT :按比例放縮,高度鋪滿螢幕。
2.2、計算方法
假設:螢幕解析度(fWidth,fHeight) ; 設計解析度(dWidth,dHeight)。
放縮因子:k1 = fWidth/dWidth ; k2 = fHeight/dHeight。
則適配後的解析度大小如下:
(1)EXACT_FIT :( dWidth * k1 , dHeight * k2 )
(2)NO_BORDER :( dWidth * max(k1,k2) , dHeight * max(k1,k2) )
(3)SHOW_ALL :( dWidth * min(k1,k2) , dHeight * min(k1,k2) )
(4)FIXED_WIDTH :( dWidth * k1 , dHeight * k1 )
(5)FIXED_HEIGHT :( dWidth * k2 , dHeight * k2 )
2.3、有圖有真相
螢幕大小:400 X 400 。
可視區域大小:480 X 320 。
根據上面的計算方法,自己慢慢琢磨吧。
3、橫豎換屏
cocos2dx開發的遊戲,在手機上執行的時候,預設是橫屏的。
3.1、Android
AndroidManifest.xml檔案中
(1)android:screenOrientation = "landscape" //橫屏顯示(預設)
(2)android:screenOrientation = "portrait" //豎屏顯示
3.2、IOS
- //
- - (NSUInteger) supportedInterfaceOrientations{
- //橫屏顯示
- //return UIInterfaceOrientationMaskLandscape;
- //豎屏顯示
- return UIInterfaceOrientationMaskPortrait;
- }
- //
4、螢幕大小及座標
(1)WinSize :螢幕大小
(2)VisibleSize :可視區域大小
(3)VisibleOrigin :可視區域的左下角座標
- //
- Director::getInstance()->getWinSize()
- Director::getInstance()->getVisibleSize();
- Director::getInstance()->getVisibleOrigin();
- //
圖解:
相關推薦
cocos2d-x 螢幕適配
cocos2dx3.2 ——螢幕適配 手機的螢幕大小千差萬別,如現在流行的安卓手機螢幕大部分長寬比例為16:9。而iPhone 5S的長寬比例為71:40(接近16:9),也有預測說iPhone 6S的長寬比例也將會是主流的16:9。另外還有一些平板電腦為4:3、1
再談cocos2d-x螢幕適配
一直以來,在 cocos2d-x 平臺中如何用一套資源適配全螢幕都是每個程式的夢想。隨手百度都可以搜尋到很多關於 cocos2dx 適配的文章,但是看完之後的感覺仍然是不知道如何具體操作,所以自己參考網上其他人的帖子,並結合 cocos2dx 原始碼,自己驗證了一番在此做個
cocos2d-x——螢幕適配
第一,對於螢幕適配問題,首先必須理解幾個基本的概念。 FrameSize:實際上就是裝置的原始解析度,開發環境中可以通過CCEGLView::sharedOpenGLView()->setFrameSize()來設定裝置的解析度大小,當然也可以可以通過CCEGLVi
cocos2d-x螢幕適配原理
一、適配簡介 如今市面上的手機種類越來越多,解析度是千變萬化的。但是我們做遊戲開發,喜歡自己的遊戲可以在各個手機都能合適的執行,那麼就需要做多解析度的適配。 二、retain螢幕概念 之前,蘋果手機對480*320和960*640的手機適配策略是這樣的,當解析度是480*320時,尋找的圖片是1.png。當
Cocos2d-x 螢幕適配解決方案
第一,對於螢幕適配問題,首先必須理解幾個基本的概念。 FrameSize:實際上就是裝置的原始解析度,開發環境中可以通過CCEGLView::sharedOpenGLView()->setFrameSize()來設定裝置的解析度大小,當然也可以可以通過CCEGLVi
iPhone X 螢幕適配,沒有鋪滿螢幕的情況
今天在適配iPhone X的時候,發現iPhone X的螢幕上下沒有鋪滿。新建的專案,以及寫的Demo都是鋪滿螢幕的。 經過反覆檢視專案後,發現原來是很久以前,專案因為啟動頁用的是Launch Image Source,因為用不到Launch Screen File 所以把Lau
cocos2d-x 之 適配解析度全屏的方法
cocos2d-x 2.0 提供一個極有價值的新特徵: setDesignResolutionSize() 。 這個函式用於指定一個 OpenGL 檢視,然後將這個檢視對映到裝置螢幕上。根據不同的設定,檢視會自動縮放顯示內容,為 cocos2d-x 自適應多種解析度
Cocos2d-JS螢幕適配(NO-BORDER模式)
距離上一篇部落格已經有將近一年時間,沒有寫什麼一個是因為一直太忙,另外一個也是不知道要寫什麼,還是做遊戲專案,不過從手遊轉到了Html5遊戲,繼續使用Cocos2d,語言換成了JS。 不多敘舊,這次簡單說下Cocos2d-JS的適配問題,
Cocos2d-x 3.1 一步步做螢幕適配
本文並不想講關於螢幕適配的概念或者大道理,如果還不瞭解cocos2d-x螢幕適配的,請先看這篇文章:http://www.cocoachina.com/gamedev/cocos/2014/0516/8451.html。本文有一些內容和圖片是引用這篇文章的。看了那麼多網上關
iOS螢幕適配 iPhone X 、iPhone XR、iPhone XS 、iPhone XS Max
隨著蘋果爸爸釋出了 超牛叉的iPhone、開發者的適配工作要開始了。 停,?。 如果app 適配過 iPhone X、新機子不用怎麼適配的了。 如果你之前的適配、都是寫死的。 建議你寫活吧。萬一,蘋果爸爸釋出全面屏的iPhone呢? 先看看新手機嘛 新手機和 iPhone X相同、都是劉海屏、 適配劉海
關於iPhone X 的適配
發現 win source chang 獲得 name 圖片 屬性 sset 1.屏幕尺寸相關變化 高度增加了145pt,變成812pt. 屏幕圓角顯示,註意至少留10pt邊距。 狀態欄高度由20pt變成44pt,留意這個距離就能避開“劉海”的尷尬,相應的導航欄以上變化6
Android 開發:(九)Android螢幕適配經驗談
1.名詞解釋 螢幕尺寸: 也就是我們平時所說的某某手機是幾寸屏, 比如HTC one V這款手機是3.7寸的, 這裡的寸說的是英寸(inch),國際上習慣使用的單位,1inch = 2.54cm,3.7寸指的是螢幕的對角線的長度。 螢幕解析度:
Android 螢幕適配之 dimens 適配
相信做手機端的 App 的小夥伴,只要是產品稍微大一點,就會面臨螢幕適配的問題,對於適配這個問題,網上眾說紛紜,以前雖然有零零散散的看過,但是沒有實踐過,也是在最近遇到這個需求的情況下才研究了一下,現在做個記錄。 1 參考連結 http://blog.csdn.net/qq_341
Cordova 小米8留海螢幕適配之沉狀態列與 適配大螢幕手機 從開始到結束 總結
之前專案中打包的apk安裝到全面屏手機後,發現在應用下方出現了一大塊黑色區域(如:小米8),只有在系統中設定適配全面屏才能讓應用在全面屏手機中顯示正常,但是這種方式並不友好,而且有些手機廠商可能也沒有這種設定,所以還是需要我們再打包的時候就做一些相應的處理。 &l
PhaserJS 3 螢幕適配時的小坑 -- JavaScript Html5 遊戲開發
PhaserJS 巨坑:在config內不要把 width 設為 window.innnerWidth在config內不要把 width 設為 window.innnerWidth在config內不要把 width 設為 window.i
【iOS】螢幕適配
螢幕適配 1、螢幕適配的發展過程: 程式碼計算frame -> autoreszing(父控制元件和子控制元件的關係) -> autolayout(任何控制元件都可以產生關係) -> sizeclass 沒有螢幕適配,直接使用frame固定子控制元件的
Anroid螢幕適配 - 工具篇
這篇文章主要是記錄下自己使用自動化外掛,進行簡單適配。 關於螢幕適配的相關知識可以參考 Android螢幕適配全攻略(最權威的官方適配指導) 1、使用外掛 ScreenMatch 關於ScreenMatch 使用原理,可以參考 &nb
Android中dp px sp概念梳理以及如何做到螢幕適配
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
iPhone X 的適配
iPhone X 的適配 很久沒時間更新部落格了,趁著專案最近不是很緊,整理一些開發中遇到的,對大家有用的東西,記錄一下. 方便日後回顧; 前幾天做了iPhone x的適配, 有些坑,希望對廣大開發者有點幫助; 我做了個圖: 可以看到, 狀態列和導航欄的高度是88了; ta
螢幕適配(劉海屏、18:9螢幕尺寸、隱藏SystemUI)
劉海屏 薩瑞劉海屏API介面 <meta-data android:name="android.compatible_notch" android:value="true"/> 參考:https://developer.huawei.