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

标签 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;

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

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

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

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

最佳答案

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

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

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

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

希望有帮助!

编辑:刚刚想起我用来确定我的主要规模和 Assets 比率的一个网站:http://screensiz.es/phone

关于android - 使用 starling 缩放 Android 设备会导致一些布局问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15542496/

相关文章:

android - ConstraintLayout,当约束依赖 View 消失时,布局 View 行为怪异

actionscript-3 - 无法创建功能以非常快(以毫秒为单位)在 Tone 上上下调整音量

flash - 使用 ActionScript 3.0 + Flash/Flex 链接 SWC 的运行时自省(introspection)

android - 我可以使用什么游戏引擎/框架来处理 air mobile 而不会出现 fps 问题?

ios - iOS 版 Starling 游戏被 App Review 拒绝

actionscript-3 - 如何将 Starling 与 Flex、混合 MXML 和 Stage 3D AS3 代码一起使用

android - 在模块之间共享依赖库

android - IntelliJ 在调试 android 应用程序时不会在断点处停止

actionscript-3 - 使用Actionscript 3.0淡入声音

android - okhttp 中的 java.net.SocketTimeoutException