CoCos2d-x屏幕分辨率設置
接下來是講述CoCos2d-x對屏幕分辨率設置的問題:主要是 setFrameSize、setFrameZoomFactor 和 setDesignResolutionSize 函數的使用。
1 . setFrameSize這個函數是設置移動設備屏幕分辨率,一般與setDesignResolutionSize的設置一致。
2 . setFrameZoomFactor 調用這個函數是因為有的移動設備屏幕分辨率非常大,比如ipad3。太大的話在電腦上看不全了,所以用setFrameZoomFactor把程序窗口縮小。因此,這個函數只有在使用win32,mac,linux桌面時才會用到。
3.這個DesignResolutionSize表示設計方案,就是你的游戲完美支持的分辨率方案,一般根據圖片資源的尺寸來定,自適配時會按照這個分辨率計算出縮放因子。
因此,這個值也應該是動態的(當然也可設定,比如設為640x960寬屏,這樣在小屏的等比縮放也不會影響太大):
pEGLView->setDesignResolutionSize(designResolutionSize.width, designResolutionSize.height, kResolutionNoBorder);
第3個參數kResolutionNoBorder 是適配策略中的一種:
2.0版本提供了三種適配策略:
(1)kResolutionNoBorder:超出屏幕的部分會被裁剪,兩側沒有黑邊,鋪滿屏幕,按圖片原始比例顯示,圖片不變形。
(2)kResolutionShowAll:整個游戲界面是可見的,會按原始比例進行縮放,圖片不變形,但兩側可能會留有黑邊,不鋪滿屏幕。
(3)kResolutionExactFit:整個游戲界面是可見的,圖片可能會進行拉伸或者壓縮處理,鋪滿屏幕,圖片會變形。
可以根據自己的要求選擇。
4.舉例:設置移動應用的分辨率,以640x960分辨率為例
(1)在main.cpp中設置:
CCEGLView* eglView = CCEGLView::sharedOpenGLView();eglView->setFrameSize(640, 960);
eglView->setFrameZoomFactor(1.0f);
(2)在AppDelegate.cpp中設置:
CCEGLView::sharedOpenGLView()->setDesignResolutionSize(640, 960, kResolutionExactFit);