本题已加入「常见问题汇总」 » 「屏幕适配」,更多「屏幕适配」相关的话题欢迎关注讨论 |
官方说明来了,不用看我写的了
egret目前有3种页面适配的方式。在lanucher/egret_loader.js里,下面一行?后一个参数就是适配模式。
- var scaleMode = egret.MainContext.deviceType == egret.MainContext.DEVICE_MOBILE ? egret.StageScaleMode.SHOW_ALL : egret.StageScaleMode.NO_SCALE;
复制代码
第1种 egret.StageScaleMode.SHOW_ALL
目前的默认配置。这个会按照等比缩放适配你的窗口。
比如游戏设定是480x800的。
如果页面是640x700,则上下满屏,两边会出现黑边。如果是640x1280,则两边满屏,下边会有黑边
第2种 egret.StageScaleMode.NO_SCALE
这个是在PC上调试用的。手机上最好不要使用.
第3种 gret.StageScaleMode.NO_BORDER
会不按照比例,按照页面的宽高暴力充满整个窗口。
那么我们做游戏的时候可以根据这3种模式调节游戏的大小。
入门级调整
就单纯使用1或者3。等比缩放大小或者填满窗口。最简单
中级调整
比如我的游戏是480x800.那么我游戏的高宽比是800/480=1.67
那么可以在egret_loader.js里这么写- //var scaleMode = egret.MainContext.deviceType == egret.MainContext.DEVICE_MOBILE ? egret.StageScaleMode.SHOW_ALL : egret.StageScaleMode.NO_SCALE;
- //原始适配方式,下面的是修改过的
- var per = window.innerHeight/window.innerWidth;
- var scaleMode;
- if(per<=1.67){scaleMode = egret.StageScaleMode.NO_BORDER;}
- else{scaleMode = egret.StageScaleMode.SHOW_ALL;}
- context.stage.scaleMode = scaleMode;
复制代码
这样配置的意思是,比如页面是640x960的,高宽是960*/640=1.5小于1.67。就不按照比例,直接铺满屏幕。比两边有黑边好看一点。
如果是640x1136的页面,大于1.67。那么显示效果就是按照等比缩放。两边铺满屏幕,下边会有一点黑边。
注意1:真实的手机屏幕上下会有浏览器的边框,得出来的宽高比是会刨除掉边框高度的。
注意2:这个只是打比方,要根据你的喜好和具体游戏的显示效果来设定模式。你可以再加更多的判断。
高级调整
首先游戏里宽度固定,然后根据stage.stageHeight来动态调整游戏的高度。
那么高宽比就是一个范围。页面的大小在这个范围内,就使用NO_BORDER,会很合适的铺满屏幕。
如果页面的高宽比不在这个范围内,使用SHOW_ALL,等比缩放。
当然你可以加更多地判断,让显示效果更好。
抛砖引玉。你有更好的适配模式,欢迎分享
|
|