1. 程式人生 > >第十二節cocosdx的螢幕適配的問題

第十二節cocosdx的螢幕適配的問題

這節來說一下螢幕適配的問題:
流程為:
Cocos2dxRenderer.nativeInit(this.mScreenWidth, this.mScreenHeight);-->
Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeInit-->
CCEGLView *view = CCEGLView::sharedOpenGLView();
view->setFrameSize(w, h);
---->
AppDelegate *pAppDelegate = new AppDelegate();
CCApplication::sharedApplication()->run();
-->
applicationDidFinishLaunching
-->

pEGLView->setDesignResolutionSize(designResolutionSize.width,

designResolutionSize.height, kResolutionExactFit);
CCSize frameSize = pEGLView->getFrameSize();
這裡的designResolutionSize 為AppMacros.h 裡面的
#define TARGET_DESIGN_RESOLUTION_SIZE DESIGN_RESOLUTION_480X320
#if (TARGET_DESIGN_RESOLUTION_SIZE == DESIGN_RESOLUTION_480X320)
static cocos2d::CCSize designResolutionSize = cocos2d::CCSizeMake(480, 320);
#elif (TARGET_DESIGN_RESOLUTION_SIZE == DESIGN_RESOLUTION_1024X768)
static cocos2d::CCSize designResolutionSize = cocos2d::CCSizeMake(1024, 768);
#elif (TARGET_DESIGN_RESOLUTION_SIZE == DESIGN_RESOLUTION_2048X1536)
static cocos2d::CCSize designResolutionSize = cocos2d::CCSizeMake(2048, 1536);
#else
#error unknown target design resolution!
#endif
來決定。
這裡我們設計時注意傳遞引數,主要有三個引數,分別為設計寬高,實際寬高,資源設計寬高。
pEGLView->setDesignResolutionSize 傳遞設計寬高,
CCSize frameSize = pEGLView->getFrameSize(); 得到螢幕寬高
pDirector->setContentScaleFactor(0.5f); 這個為資源寬高/設計寬高得來
pDirector->setContentScaleFactor 裡面的0.5f 的意思為:資源設計的是設計寬高的1 /2 ,那麼拿
取資源需要先放大到設計資源大小,即資源的大小會放大一倍。
隨後拿到的設計大小,再依據傳遞的設計大小和螢幕大小算出的比率,轉化為螢幕大小。
這個便是適配的原理。

然後像
CCSpriteFrame *frame0=CCSpriteFrame::createWithTexture(pTexture,CCRect((float)(0),
(float)(0), (float)(32*2), (float)(32*2)));
這裡面需要拿出的為資源裡面的32*32 點陣圖,則需要去傳入引數*2 ,因為2 為資源轉化為設計寬高
的倍數。我們這裡需要傳入的是設計大小

相關推薦

cocosdx螢幕的問題

這節來說一下螢幕適配的問題: 流程為: Cocos2dxRenderer.nativeInit(this.mScreenWidth, this.mScreenHeight);--> Java_org_cocos2dx_lib_Cocos2dxRenderer_nati

python學習筆記

random 對象 學習 alt 重命名 浮點 內容 目錄 模塊 模塊:模塊本質上就是一個py文件。分為三部分:內置模塊、第三方模塊(模塊調用以及包的概念)先找解釋器裏的Py文件 再找安裝路徑lib下的文件,再找自定義的模塊。時間戳:1970年設置的一個時間為0,時間每增加

ABP module-zero +AdminLTE+Bootstrap Table+jQuery權限管理系統--小結,Bootstrap Table之角色管理

增刪 習慣 etc 根據 很好 這不 update 必須 virtual 返回總目錄:ABP+AdminLTE+Bootstrap Table權限管理系統一期 很多人說ABP不適合高並發大型,有一定的道理,但是我覺得還是可以的,就看架構師的能

pri record 添加 null pda column values int 進行 創建表 create table student( `id` int not null primary key auto_increment, `name` char(32)); 插入

學習筆記

作業usermod命令 usermod 可以改一個用戶的uid和gid 也可以指定家目錄和 shell 還有一個選項 -G 我們可以用id 選項查看用戶的組 組不僅包括uid和gid 還包括了一些擴展組。一個用戶可以屬於多個組,gid只有一個,其他的叫擴展組 做個實驗:把用戶放在grp2裏, 也

HTML學習筆記 css定位(靜態,相對,固定,絕對布局)偏移案例 (原創) 參考使用表

absolute write style 用戶 學習 nbsp -c code posit <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"

SEO自學網體系教程:網站改版與SEO

拿我本站(https://www.seo-wangzhan.com/) 舉例子,最近我對我這個站做了一點小小的改版 第一.確定目標關鍵詞 並在首頁佈局 一般首頁確定2~3個目標關鍵詞,太多了反而會造成每個關鍵詞都做不上去 比如,我確定我網站的目標關鍵詞就是:SEO自學網 和 SEO

----備份與恢復

12.1  備份         語法:SAVE         備份的資料庫在 redis 安裝目錄中建立dump.rdb檔案。 SAVE 12.2 

2018.12.2

使用Apache服務部署靜態網站     SELinux服務有三種配置模式, enforcing:強制啟用安全策略模式,將攔截服務的不合法請求。 permissive:遇到服務越權訪問時,只發出警告而不強制攔截。 disabled:對於越權的行為不警告也不攔截。

課:10章,Apache網站服務

第十章 10.1、網站服務程式         (讓使用者能夠通過網站訪問伺服器上的資源)         目前提供的網站服務有IIS,Nginx,Apache等,IIS是windows中預設的web服務程式。 &nb

】PyQt5俄羅斯方塊

文章目錄 [ 隱藏 ] 俄羅斯方塊 開發 這一節我們建立一個俄羅斯方塊 俄羅斯方塊 俄羅斯方塊遊戲是有史以來最受歡迎的電腦遊戲。最初的遊戲是由俄羅斯設計和程式設計的程式設計師阿列克謝帕基特諾夫於1985年。此後,俄羅斯方塊是幾乎所有的計算機平臺上可用在很多變化。 俄羅

Spark修煉之道(高階篇)——Spark原始碼閱讀: Spark SQL 處理流程分析

作者:周志湖 下面的程式碼演示了通過Case Class進行表Schema定義的例子: // sc is an existing SparkContext. val sqlContext = new org.apache.spark.sql.SQLConte

Scala入門到精通—— I/O與正則表示式

本節主要內容 Scala I/O操作簡介 Scala 寫檔案 Scala 讀檔案 Scala 網路I/O 正則表示式簡介 Scala正則表示式實戰 1. Scala I/O操作簡介 I/O操作是一門程式語言中的重要內容,在Scala中,它更多的是呼

【Nginx】 配置跨域訪問

author:咔咔 wechat:fangkangfk   先看一下哪些都屬於跨域   跨域:這個意思就是在A域名下的業務,需要請求到B域名的程式碼,這就這簡單的跨域   在正常的業務中,很難避免跨域,所以我們就需要使用nginx配

、css進階:消除未使用的css

相信有很多人都用過Bootstrap這個框架,我們在使用的時候每個頁面只使用了其中一小部分的css樣式,對著專案的推進,css程式碼會越來越多,有些是你自己寫的,有的是你直接使用框架定義好的,到後期進行需求更改的時候我們可能就無暇關注css樣式,造成很多css的冗餘。這節內

Spring入門學習(基於註解的方式配置Bean)

Spring入門學習(基於註解的方式配置Bean) 指定SpringIOC容器掃描包 分別建立`repository,service,controller`層 指定SpringIOC容器掃描包 分別建立reposi

ABP module-zero +AdminLTE+Bootstrap Table+jQuery許可權管理系統--小結,Bootstrap Table之角色管理以及module-zero角色管理

寫在前面的話           很多人說ABP不適合高併發大型,有一定的道理,但是我覺得還是可以的,就看架構師的能力了,我之前公司就是ABP絕對百萬資料級專案,是一個線上教育網站,涉及到平臺,學院,院系,班級,課程,學生等,一個平臺多少大學,一個大學多少院系,一個院系多少班級多少課程,其負責程度一

:類的定義

Java高階程式設計 掌握 類的定義; 物件的定義; 類的構造方法; 方法的過載 實現步驟: 新建Worker類 為Worker類新增四個屬性 為Worker類新增

、尺度不變特徵(SIFT)

上一節中,我們介紹了Harris角點檢測。角點在影象旋轉的情況下也可以檢測到,但是如果減小(或者增加)影象的大小,可能會丟失影象的某些部分,甚至導致檢測到的角點發生改變。這樣的損失現象需要一種與影象比例無關的角點檢測方法來解決。尺度不變特徵變換(Scale-Invariant Feature Transfor

課20180930

    今晚的課從9.3講到10.4。  上完課只一點理論的印象,實操還在追補前面的克隆虛擬機器並配好網絡卡,雖然老師沒講這個,但需要用到,搞幾個小時,總算搞定!其中,克隆簡單,配網絡卡老失敗,想想可能是網絡卡名稱重複導致衝突,結果猜中!新增三塊網絡卡,啟用第三塊後刪除前兩塊