在 Flex/AIR 中创建应用程序的最佳方式是什么, 无论屏幕如何,外观和感觉都相同 解析度?
3 回答
在您的 flex 应用程序中创建布局时,您可以通过使用相对缩放来实现与屏幕分辨率无关的一致外观。
这很类似于使用 HTML 创建一个流动的布局。
例如,要创建一个简单的两列应用程序(左侧导航和内容),您只需要两个容器,一个是预定义的,一个是左侧可以无限扩展的。
如下:
<mx:HBox width="225">
<mx:Button label="Menu 1"/>
<mx:Button label="Menu 2"/>
<mx:Button label="Menu 3"/>
</mx:HBox>
<mx:HBox width="100%">
Any content here will flow fluidly across the entire screen regardless of window size/screen resolution.
</mx:HBox>
使用上述基础知识,您可以创建适用于任何屏幕的应用程序布局。
但是,有时您需要创建一个更精细的布局方案,其中包含许多可以动态调整大小以适应窗口的互换组件。
为此,您可以进行绝对定位。覆盖组件 updateDisplayList() 函数并创建自己的大小/定位规则。
这当然需要您在 Canvas 容器内或将主应用程序容器设置为绝对布局。
一个简单的例子:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number) : void
{
//find out how big we are
var stageWidth:int = this.width;
//center the box in the middle of the page.
centeredBox.x = stageWidth - (centeredBox/2);
}
</mx:Script>
<mx:HBox id="centeredBox" width="500"/>
</mx:Application>
通过重写 updateDisplayList(),您可以创建无穷无尽的方法来更好地动态定位和调整组件的大小,从而更好地使用屏幕不动产。
您可以创建一个具有与容器相应的高度和宽度的应用程序,以便所有组件在所有屏幕分辨率下都可以正常显示。
我们通常创建一个 MainFrame.mxml 作为我们的主要组件,并具有其他人提到的布局相对缩放。然后我们创建一个 AIR 应用程序,它只嵌入了一个 MainFrame.mxml 和另一个嵌入它的 Flex 应用程序。这样我们就可以将整个应用程序保留在 MainFrame 中,而不必担心它是在 Flex 还是 Air 中。话虽这么说,您需要确保您不使用任何不会转换到另一个的特定于 AIR 或特定于 Flex 的调用。