使用starling缩放Android设备会导致一些布局问题

时间:2013-03-21 08:24:07

标签: android actionscript-3 starling-framework

我正在使用此article

中编写的多分辨率技术三

并确定比例因子和舞台大小,我使用的是最初由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

2 个答案:

答案 0 :(得分:2)

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

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

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

这有助于您保持舞台的固定大小。它真的很有帮助,因为否则很难定位物体 - 如果你想让物体在中间,它有时是160,有时是320,等等。这意味着你总是需要设定位置/ size与计算,这是一个过载。

希望有所帮助!

编辑:刚刚记住了我用来确定我的主要规模和资产比率的网站:http://screensiz.es/phone

答案 1 :(得分:1)

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

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