2

我正在使用本文中所写的第三多分辨率技术

为了确定比例因子和舞台大小,我使用了最初由 Jeff 编写的这段代码:

        if (Capabilities.screenDPI >= 200) {
            if (Capabilities.screenDPI >= 280) {
                AssetFactory.contentScaleFactor = 2;
            }
            else {
                AssetFactory.contentScaleFactor = 1.5;
            }
        }
        else {
            AssetFactory.contentScaleFactor = 1;
        }

        var mViewPort:Rectangle = new Rectangle(0, 0, stage.fullScreenWidth, stage.fullScreenHeight);

        mStarling = new Starling(Startup, stage,mViewPort);
        mStarling.stage.stageWidth = stage.fullScreenWidth /  AssetFactory.contentScaleFactor;
        mStarling.stage.stageHeight = stage.fullScreenHeight / AssetFactory.contentScaleFactor;

然后我使用这个比例因子来确定我需要选择哪些大小的资产。

所以现在,我有一个背景,可以拉伸到舞台宽度和大小。当我使用大多数设备进行测试时,这种技术效果很好,但是我们有像 Barnes 和 Noble Nook Color 这样的设备。

该设备的分辨率为 600x1024,分辨率为 170 dpi。这意味着它将选择最小的资产 (320x480) 并将其拉伸到 600x1024。这当然是像素化的。关于如何克服这个问题的任何想法?

我还附上了一个测试应用程序,详细显示了这个问题https://dl.dropbox.com/u/2192209/scaling%20test.zip

4

2 回答 2

2

到目前为止,对我最有效的是根本不缩放 Starling 的视口。它应始终保持基本尺寸 (320x480)。

然后你有一个关于纹理应该有多大的比例因子。这是 Starling 在创建纹理时的内置功能 - 通过比例因子。这意味着如果您的舞台是 640x960,那么您的比例因子将为 2。您的图像(位图对象)的实际屏幕尺寸为 320x480(全屏,舞台尺寸为 1:1),但它是纹理(加载的资产 BitmapData ) 将是原来的两倍(640x960,1:1 与手机尺寸)。

为了更容易理解 - Starling (320x480) 的舞台将按比例放大以适合您手机的分辨率 (320 -> 640)。但是您的图像将按比例缩小以适合舞台(640 -> 320)。所以你得到完全正常的图像。

这有助于您保持固定大小的舞台。这真的很有帮助,因为否则很难定位对象 - 如果您希望对象位于中间,有时是 160,有时是 320,等等。这意味着您始终必须通过计算设置位置/大小,这是一个超载。

希望有帮助!

编辑:只记得我用来确定我的主要大小和资产比率的网站: http: //screensiz.es/phone

于 2014-03-27T11:07:55.560 回答
1

如何设置最大比例尺寸?如果上述计算的结论使您的规模大于2,请使用更大的资产来降低规模比率。

您的计算只计算 screenDPI,尝试将它们与屏幕分辨率结合起来。

于 2014-03-27T08:01:42.143 回答