LayaAir屏幕適配
官方教程鏈接:LayaAir實戰開發11-屏幕適配
屏幕適配
隨著移動端設備(手機、平板、電視)的增多,設備碎片化、屏幕碎片化的程度也在不斷增加,而我們今天要探討的,則是對游戲顯示影響比較大的屏幕碎片化。
為了更深入的了解屏幕適配,我們先從Iphone屏幕分辨率發展說起:
在早先的移動設備中,屏幕像素都比較低,如 Iphone3,它的分辨率為320480,在Iphone3上,一個像素等于一個屏幕物理像素。后來隨著設備屏幕像素密度越來越高,從iphone4開始,蘋果推出了Retina屏,分辨率變成了640960,提高一倍,但屏幕尺寸卻沒變化,這就意味著同樣大小的屏幕上,像素卻多了一倍,這提高的就是devicePixelRatio,其他安卓移動設備也類似與此。
所以我們得出一個公式: 物理分辨率=像素分辨率*devicePixelRatio;
引擎對上述兩種分辨率做了封裝。
設備像素分辨率:Laya.Browser.clientWidth,Laya.Browser.clientHeight;
設備物理分辨率:Laya.Browser.width,Laya.Browser.height;
像素比:Laya.Browser.pixelRatio;
默認從瀏覽器獲得的clientWidth不是像素分辨率,而是經過縮放過的分辨率,想要獲得正確的分辨率,需要在html頁面內設置viewport meta標簽,設置content的值為"width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"。
<meta name='viewport' content='width=device-width,
initial-scale=1.0,minimum-scale=1.0,
maximum-scale=1.0,user-scalable=no'/>
在LayaAir引擎內,如果頁面未設置過viewport標簽,則引擎會自動生成一個,以確保獲取的正確寬高。
適配模式
LayaAir提供了多種適配模式供使用者選擇,可以通過scaleMode屬性進行設置,scaleMode有如下可選值:
noscale:應用保持設計寬高不變,不縮放不變形,stage的寬高等于設計寬高。
exactfit:應用根據屏幕大小鋪滿全屏,非等比縮放會變形,stage的寬高等于設計寬高。
showall:應用顯示全部內容,按照最小比率縮放,等比縮放不變形,一邊可能會留空白,stage的寬高等于設計寬高。
noborder:應用按照最大比率縮放顯示,寬或高方向會顯示一部分,等比縮放不變性,stage的寬高等于設計寬高。
full:應用保持設計寬高不變,不縮放不變形,stage的寬高等于屏幕寬高。
fixedwidth:應用保持設計寬度不變,高度根據屏幕比縮放,stage的寬度等于設計寬度,高度根據屏幕比率大小而變化。
fixedheight:應用保持設計高度不變,寬度根據屏幕比縮放,stage的高度等于設計寬度,寬度根據屏幕比率大小而變化。
比較常用的縮放模式有,showall,full,fixedwidth,fixedheight,具體用哪種適配模式,需要大家自己來衡量。
對齊模式
不僅可以設置非全屏縮放模式,比如noscale,showall,則還可以使用對齊模式進行對齊。
alignH:水平對齊方式,有"left","center","right"三種值可選。
alignV:垂直對齊方式,有"top","middle","bottom"三種值可選。
橫豎屏設置
通過screenMode屬性,可以設置游戲的橫豎屏,在手機瀏覽器發生旋轉后,還能正確的顯示,有以下值可以選擇。
"none" :不更改屏幕。
"horizontal" :自動橫屏。
"vertical" :自動豎屏。