我正在使用本文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/