【发布时间】:2013-09-21 12:03:28
【问题描述】:
您如何处理在 Adobe AIR 基础 iOS 应用程序中交换正确的 dpi 位图?你有每个图像的两个版本吗?您是在检测到设备分辨率后在运行时加载它们,还是只是将它们都嵌入并随时选择适当的分辨率图像?还是只是缩小 HiDPI 图像?
【问题讨论】:
您如何处理在 Adobe AIR 基础 iOS 应用程序中交换正确的 dpi 位图?你有每个图像的两个版本吗?您是在检测到设备分辨率后在运行时加载它们,还是只是将它们都嵌入并随时选择适当的分辨率图像?还是只是缩小 HiDPI 图像?
【问题讨论】:
我个人避免为移动设备缩放图像,尤其是在 AIR 中。嵌入图像也会使您的内存使用量和 swf 大小膨胀,鉴于资源有限,这并不理想。我将资产文件夹结构分为 160、240、320,并在加载资产之前在运行时查询应用程序 DPI。
创建一个包含这样的静态方法的简单类可能很有用。
public static getAssetPath(name:String, ext:String):String {
switch(DPI) {
case 320:
return "assets/320/" + name + ext;
case 240:
return "assets/240/" + name + ext;
case 160:
return "assets/160/" + name + ext;
default:
throw new Error("Unknown device DPI");
}
}
希望对您有所帮助。
【讨论】:
根据您的图像(带或不带文本),我喜欢使用矢量并在运行时创建缩放位图,当它们没有文本时。但是在将矢量绘制到 Bitmap 时,使用过滤器可能会成为问题。
对于带有文本的图像,我在我的资产中使用预渲染图像并在运行时相应地加载它们。这是一篇很棒的文章,解释了最佳实践
Adobe- Multible screen sizes in AIR
【讨论】: