我正在使用此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
答案 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计算在内,尝试将它们与屏幕分辨率结合起来。