About

<#TEMPLATE_INCLUDE_NINEPAGE_ABOUTME#>
  • Oct

    27

    其实就是为了求一个独立对象匹配另一个固定的显示对象时的缩放值:

    var rec1:Rectangle = new Rectangle(0,0,w1,h1);//匹配的矩形对象(被缩放的对象)
    var rec2:Rectangle = new Rectangle(0,0,w2,h2);//被匹配的原矩形对象

    var _scaleW:Number = w2 / w1;
    var _scaleH:Number = h2 / h1;

    var scale:Number = Math.min(_scaleW,_scaleH);

    Starling 源码包中带有一个 Scaffold_Mobile 的项目样例代码,在多分辨率开发的过程中,里面通过 viewPort 属性来调整视口大小,为了保证游戏的清晰度和宽高比例,采用了屏幕留空白边距的方式:

     

    个人觉的这种留边效果比模糊效果更恶劣,至少在视觉上应该把这些黑色(舞台颜色)的留边区域放一个底纹图,但 viewPort 视口大小确定后, Starling 的舞台就不能再添加其它背景图片渲染至 viewPort 的外部。

    所以个人更喜欢 viewPort  与 Starling 的舞台大小一致,添加拼贴纹理图作为整个游戏的背景图,并保证背景图与屏幕大小一致,然后按比例缩放内部的单个 / 整个游戏场景更为合适。既便要留出边距保证清晰度,至少也有背景图作为过渡,没有这种黑色的边框这么突兀(因为一些安卓机的分辨率宽高尺寸是非常奇葩的,如果是用舞台背景作为边距,可能会是很大的一块区域)。